这是问题的副本: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)
这与作为对另一个问题的答案所发布的内容相同,并且一遍又一遍地说明它有效 - 但它什么都不返回!
这是一个错误还是我做错了什么?
答案 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规则语言是不可能的,因为您需要能够读取整个目录才能查询它。我已经更改了规则,允许所有经过身份验证的用户读取所有组并解决了这个问题 - 尽管它不是理想的安全性。
我花了这么长时间才弄明白,因为它没有在日志中给我一个权限被拒绝错误 - 它只是给了我一个空查询。