2016-11-11 14 views
5

createdAtがに等しいすべてのエントリを取得しようとしていますが、何も返されません。Swift 3.0でFirebaseを照会

私はここで間違っていますか?そして、私がやろうとしている方法でデータを照会する適切な方法は何ですか?

JSON:

{ 
     "thoughts" : { 
     "-KWGdcdZD8QJSLx6rSy8" : { 
      "createdAt" : "Tomorrow", 
      "thought" : "meno", 
      "user" : "ET9tYfHqThNTsLG4bZGIbuLGauu2" 
     }, 
     "-KWGeGivZl0dH7Ca4kN3" : { 
      "createdAt" : "Today", 
      "thought" : "meno", 
      "user" : "ET9tYfHqThNTsLG4bZGIbuLGauu2" 
     }, 
     "-KWGeIvWHBga0VQazmEH" : { 
      "createdAt" : "Yesterday", 
      "thought" : "meno", 
      "user" : "ET9tYfHqThNTsLG4bZGIbuLGauu2" 
     } 
     } 
    } 

スウィフト:

let db = FIRDatabase.database().reference().child("thoughts") 
    let ref = db.queryEqual(toValue: "Today", childKey: "createdAt") 

    ref.observe(.value, with:{ (snapshot: FIRDataSnapshot) in 
     for snap in snapshot.children { 
      print((snap as! FIRDataSnapshot).key) 
     } 
    }) 

答えて

8

あなたがcreatedAtにしてequalTo Todayこの問題を持つ他の誰のために、この行を更新

let ref = FIRDatabase.database().reference().child("thoughts").queryOrdered(byChild: "createdAt").queryEqual(toValue : "Today") 

ref.observe(.value, with:{ (snapshot: FIRDataSnapshot) in 
    for snap in snapshot.children { 
     print((snap as! FIRDataSnapshot).key) 
    } 
}) 
+0

を使用するよりもqueryOrderedByChildを使用する必要があります。 'let ref = db.queryOrdered(byChild:" createdAt ")。queryEqual(toValu e: "Today") ' –

+0

@ColbyGatte私はrefrence行を編集しました。もう一度試してください。 –

+0

こんにちは@ EICaptainv2.0、私はあなたの答えを実装しましたが、私はすべての子ノードを取得しています。私は.valueの代わりに.childAddedを使用していますが、私はすべての子の値を取得するだけでなく、クエリにマッチします(私はIntタイムスタンプで注文し、queryStarting(at :)を使用しています。あなたは流すことができます。 – Septronic

関連する問題