如何在Swift中自动生成的键上查询OrderedByValue?

时间:2018-07-11 07:21:51

标签: swift firebase firebase-realtime-database

我需要在自动生成密钥的节点上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)
            }

enter image description here

2 个答案:

答案 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