ios - Firebase queryOrderedbyChild 不返回 Null 值

标签 ios swift firebase firebase-realtime-database

我有一个根据用户年龄搜索用户的查询:

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/

相关文章:

android - 使用 FirebaseOptions 初始化 firebase

iOS segue 在显示新 View 之前卡住多秒

ios - Firebase 动态链接在应用启动时不起作用

iOS 在应用程序退出 10 天时创建本地通知

ios - CoreData 一对多关系与值比较

swift - NSFont.TextStyleOptionKey 中可以使用哪些值

typescript 错误 : Property 'FIREBASE_APPCHECK_DEBUG_TOKEN' does not exist on type 'Window & typeof globalThis' (TS2339)

android - 收到通知后更改通知内容

ios - 如果我插入或删除行,UITableView 部分标题会消失

ios - 无法更改 WKWebView 中 UIScrollview 的内容大小