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

时间:2019-10-09 01:32:32

标签: 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)
        })

1 个答案:

答案 0 :(得分:1)

从Firebase检索数据时,快照包含所有子节点的键,值,。但是,当您调用snapshot.value时,需要将其转换为Dictionary,后者仅具有键和值的空间。因此,此时有关子节点顺序的信息已丢失。

要维持子节点的顺序,请按listening for child events上的文档所示遍历snapshot.children,例如,此答案为Iterate over snapshot children in Firebase