我需要在自动生成密钥的节点上queryOrderedByValue()
。我的数据库结构如下图所示(/ users-pings / $ uid / $ uid /“ auto-id”)。
我可以对下面的查询进行哪些更改以实现此目的?
REF_USERS_PINGS.child(currentUid).child(forId).queryOrderedByValue().queryEqual(toValue: "true").observeSingleEvent(of: .value) { (snapshot) in
if snapshot.exists(){
handler(true)
} else {
handler(false)
}
答案 0 :(得分:2)
Firebase数据库查询在运行它们的位置下的每个子节点上运行,因此在您的情况下,它们会自动跳过user-pings
下的第三级。
您只需要指定要对其排序/过滤的属性,这里似乎是active
。像这样:
REF_USERS_PINGS.child(currentUid).child(forId).queryOrdered(byChild: "active").queryEqual(toValue: "true").observeSingleEvent(of: .value) { (snapshot) in
答案 1 :(得分:0)
您需要使用queryOrderedByKey()
仅返回与该ID相关的结果:
REF_USERS_PINGS.child(currentUid).child(forId).queryOrderedByKey().queryEqual(toValue: "-LH72MNIVX8o4KI3V9nL").observeSingleEvent(of: .value) { (snapshot) in
更多信息在这里:
https://firebase.google.com/docs/database/ios/lists-of-data#data_order