孩子的孩子的Swift Firebase查询

时间:2016-11-08 23:24:50

标签: swift firebase firebase-realtime-database

这是问题的副本:Querying in Firebase by child of child

有两个相同的答案,但它们都不起作用。我只是回答答案,但我没有这样做的声誉 - 所以我需要问另一个问题(stackOverflow失败 - 我可以用多个网站泛滥但我无法告诉某人他们的答案不起作用!?!)

我正在使用使用群组的Firebase应用。每个组的结构都是这样的

    groups : {
  "-KW5C5pS_OsWqS8_SLDy" : {
    "key" : "-KW5C5pS_OsWqS8_SLDy",
    "name" : "Test",
    "users" : {
      "uFpUrVFafVgVFsQudTNpOquIJZE2" : true
    }
  }
}

我希望能够查询具有当前用户uid的组,其中包含true或false,表明他们是否具有管理员权限。现在我的查询看起来像这样:

FIRDatabase.database().reference()
        .child("groups").queryOrdered(byChild: "users/" + uid).queryEqual(toValue: writable)

这与作为对另一个问题的答案所发布的内容相同,并且一遍又一遍地说明它有效 - 但它什么都不返回!

这是一个错误还是我做错了什么?

2 个答案:

答案 0 :(得分:0)

我认为你的查询是对的,你忘记了观察者:

    FIRDatabase.database().reference()
    .child("groups").queryOrdered(byChild: "users/" + uid).queryEqual(toValue: writable).observe(FIRDataEventType.value, with: { (snapshot) in
 // Do what you need with your snapshot here
 // check if the snapshot is different from nil
})

答案 1 :(得分:0)

好的 - 我发现了我的问题。我已经设置了一条规则,允许我只读取我所属的那些组 - 但显然这对于​​当前的Firebase规则语言是不可能的,因为您需要能够读取整个目录才能查询它。我已经更改了规则,允许所有经过身份验证的用户读取所有组并解决了这个问题 - 尽管它不是理想的安全性。

我花了这么长时间才弄明白,因为它没有在日志中给我一个权限被拒绝错误 - 它只是给了我一个空查询。