Firebase queryEqualToValue

时间:2017-09-09 18:25:53

标签: swift firebase-realtime-database

我有当前的Firebase数据库结构。 Firebase Database Structure

我想查询所有的真/假值。

我当前的代码是;

let resultsRef = Database.database().reference().child("user_results").child(userID)
    let query = resultsRef.queryOrderedByKey().queryEqual(toValue: "false")
       query.observeSingleEvent(of: .value, with: { (snapshot) in 

userID是“MyRQOZ ...”

打印快照没有给我任何帮助。但是,如果我这样做

.queryLimited(toFirst: 1)

我得到了我想要的快照。

["yhgeZLXJhuXKmbnK1eRwkC4xmO84": false]

我相信我的参考资料我需要走得更远。但我不知道id会是什么。

1 个答案:

答案 0 :(得分:0)

您只是查询第一个事件

observeSingleEvent

尝试

query.observe(.childAdded, with: { (snapshot) in

并添加一个if语句来捕获值

(编辑)在您已经拥有的原始代码下添加此If语句,如下所示:

let resultsRef = Database.database().reference().child("user_results").child(userID)
let query = resultsRef.queryOrderedByKey().queryEqual(toValue: "false")
   query.observeSingleEvent(of: .value, with: { (snapshot) in 
       if let trueOrFalse = snapshot.value as? [String: AnyObject] {
               for (ke, value) in trueOrFalse {
                   if value as! String == "false" {
                       // 'ke' is now all of the keys where the value so you could do something like...
                       print(ke) //and it will give you the keys that have false as the value.