swift - 排序不适用于 firebase 实时数据库中的 queryOrdered

标签 swift firebase firebase-realtime-database

  "users":{
    "steve_rodriquez":{
        "ch1":{
             "timestamp":2
        },
        "ch2":{
            "timestamp":1
        },
        "ch3":{
            "timestamp":4
        },
        "ch4":{
            "timestamp":3
        }
    }   
}

规则定义为

 "rules": {
    ".read": true,
    ".write": true,
    "users":{
         ".indexOn": ["timestamp"] 
    }
  }

当我尝试根据时间戳排序时,它不起作用。例如,我添加了 1,2,3,4

这是我的客户端代码

ref = Database.database().reference()
        (ref.child("users").child("steve_rodriquez")).queryOrdered(byChild: "timestamp").observeSingleEvent(of: .value, with: {(snapshot) in
            print(snapshot.value as Any)
        })

最佳答案

当您从 Firebase 检索数据时,快照包含键、值、所有子节点的顺序。但是当您调用 snapshot.value 时,它需要将其转换为 Dictionary,其中只有键和值的空间。所以此时关于子节点顺序的信息丢失了。

要维护子节点的顺序,请遍历 snapshot.children,如 listening for child events 上的文档所示。 ,例如这个答案:Iterate over snapshot children in Firebase

关于swift - 排序不适用于 firebase 实时数据库中的 queryOrdered,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58295915/

相关文章:

SwiftUI:如何绘制填充和描边形状?

java - 更新补丁更新后,三星 S10 设备的 Android12 中未收到 Firebase 推送通知

ios - 尝试让我的应用播放像 Snapchat Stories 一样的故事

ios - 向使用 UIViewRepresentable 创建的按钮添加操作

swift - 使用堆栈和导航栏从 AppDelegate 推送到 ViewController

javascript - 在 Promise 之后从 .catch 函数内访问 $scope

firebase - Expo React Native 的地点 API 自动完成的替代方案

android - 用户存在和身份验证

firebase - 是否可以从 firebase 向电话号码发送短信?

ios - 无法从呈现的 View Controller 访问 TopView