我有一个根据用户年龄搜索用户的查询:
self?.ref.child("users").queryOrdered(byChild: "age").queryStarting(atValue: "18").queryEnding(atValue: "25").observeSingleEvent(of: .childAdded, with: { (snapshot) in
print(snapshot)
我的 Firebase 结构是这样的:
users
-> uid1
-> age : "18"
-> name : "Lisa"
-> ...
-> uid2
-> age : "18"
-> name : "Elizabeth"
-> ...
在我的数据库中有两个人的年龄:“18”。
当 queryStartingAtValue 为“18”时,一切正常。
当我将 queryStartingAtValue 更改为不存在的年龄(例如“19”)时,会出现此问题。
确实没有返回任何结果,数据似乎被阻塞在查询内部。
您知道此查询有什么问题吗?
谢谢。
最佳答案
在您显示的数据中,没有 19
或更高的节点,因此查询不匹配任何节点。在这种情况下,.childAdded
事件不会触发。
如果您想检测这种情况,则必须监听 .value
事件,即使没有子项,该事件也会触发。但在这种情况下,您将为所有匹配的子项获得一个 .value
事件,因此您需要 loop over the child nodes :
self?.ref.child("users")
.queryOrdered(byChild: "age").queryStarting(atValue: "18")
.queryEnding(atValue: "25")
.observeSingleEvent(of: .value, with: { (snapshot) in
print(snapshot.exists())
for child in snapshot.children {
...
}
关于ios - Firebase queryOrderedbyChild 不返回 Null 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44598870/