Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Swift中自动生成的密钥上查询OrderedByValue?_Swift_Firebase_Firebase Realtime Database - Fatal编程技术网

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

如何在Swift中自动生成的密钥上查询OrderedByValue?,swift,firebase,firebase-realtime-database,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)

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

Firebase数据库查询在您运行它们的位置下的每个子节点上运行,因此在您的情况下,它们会在
用户ping下自动跳过第三级

您只需要指定要排序/筛选的属性,它在这里似乎是活动的。比如:

REF_USERS_PINGS.child(currentUid).child(forId).queryOrdered(byChild: "active").queryEqual(toValue: "true").observeSingleEvent(of: .value) { (snapshot) in

您需要使用
queryOrderedByKey()
仅返回与该id相关的结果:

REF_USERS_PINGS.child(currentUid).child(forId).queryOrderedByKey().queryEqual(toValue: "-LH72MNIVX8o4KI3V9nL").observeSingleEvent(of: .value) { (snapshot) in
更多信息请点击此处:


啊哈!这是完全有道理的,而且成功了非常感谢您的帮助:)一个简单的问题:如果我想添加一个额外的订单/过滤器(例如:类型),我可以绑定一个额外的
queryOrdered(byChild:“type”)。queryEqual(toValue:“complaude”)
到查询中吗?@Roggie否。查询只针对独生子女。Uou无法查询active=true且type=compaign的位置。但您可以存储复合值并在其上进行查询。例如,将另一个子节点添加到结构中:键入_active:“恭维_true”。注意:您的结构中的潜在问题;将bool值存储为字符串“true”,该字符串不等于true,因此,如果您通过该字符串进行查询时要小心,因为如果您正在查找一个bool值为true,您将找不到它。正如Jay所说,Firebase数据库查询只能对单个属性进行排序/筛选。在许多情况下,可以将要筛选的值组合到单个(合成)特性中。有关此方法和其他方法的示例,请参见我的回答:感谢您的建议,但这并不能解决问题,
LH72MNIVX8o4KI3V9nL
是自动生成的,因此不会事先知道此值。