[英]Firebase: Swift - Query value in child node without knowing the parent key
[英]FIrebase 3 query to return value that matches child key/value
我刚刚将我的iOS应用程序升级为使用Firebase 3,并且在Firebase 2中运行的查询在Firebase 3中不再起作用。
旧查询的编写方式如下。
fireBaseUser.queryOrderedByChild("displayName").queryEqualToValue(friendDisplayName)
.observeSingleEventOfType(.Value, withBlock: { snapshot in
}
这里的friendDisplayName可能是“ someguy1”,那将返回someguy1所属的对象。
但是,现在,相同的查询在firebase 3上不返回任何内容。我感觉是因为firebase 3不在内部子对象本身中查找,而是在寻找displayName作为实际的子对象本身。 例如,如果我将其更新为该查询,它将按预期返回。
database.child("0hfTq3CTtFWNFvG0dmea1rAYpoW2").queryEqualToValue("someguy1", childKey: "displayName").observeSingleEventOfType(.Value, withBlock: { snapshot in
}
但是显然这对我来说不是解决方案,因为我不想解析子节点然后搜索它们等等。我认为一种解决方案是firebase有一个“全部捕获”的解决方案。 '您可以在其中指定一个孩子,例如
database.child(*****).etc
****可以是任何值,不需要在实际查询中指定。
有谁知道如何解决这个问题? 我在下面附加了firebase JSON布局。
谢谢!
{
"users" : {
"0hfTq3CTtFWNFvG0dmea1rAYpoW2" : {
"displayName" : "someguy1",
"pushOptions" : 1,
"pushToggle" : false
},
"9BATNLBnnoXMOvK4lHtQfmNGJJy1" : {
"displayName" : "someguy2",
"pushOptions" : 0,
"pushToggle" : true
}
}
}
我实际上发现,尽管没有文档,但displayName却充当关键字-firebase提供给您的用户对象现在提供了displayName属性,但是与大多数其他数据库不同,您不能在任何其他节点中使用displayName或孩子们-可以,但是无法搜索。 最后,将displayName属性更改为userName解决了我所有的问题。
希望这对其他人有帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.