2016-11-11 113 views
5

我试图获得createdAt等于Today的所有条目,但它不返回任何内容。用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

您需要使用queryOrderedByChildcreatedAt比使用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

更新该行其他任何人有这个问题: 'let ref = db.queryOrdered(byChild:“createdAt”)。queryEqual(toValu e:“Today”)' –

+0

@ColbyGatte我刚刚编辑了引用行...请你再试一次 –

+0

嗨@ EICaptainv2.0,我实现了你的答案,但是我得到了所有的子节点。我使用的是.childAdded而不是.value,并且我得到了所有的子值,而不仅仅是匹配查询的那些值(我用Int时间戳命令,并且使用queryStarting(at :)。你可以摆脱。 – Septronic