"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)
})
答案 0 :(得分:1)
从Firebase检索数据时,快照包含所有子节点的键,值,和。但是,当您调用snapshot.value
时,需要将其转换为Dictionary
,后者仅具有键和值的空间。因此,此时有关子节点顺序的信息已丢失。
要维持子节点的顺序,请按listening for child events上的文档所示遍历snapshot.children
,例如,此答案为Iterate over snapshot children in Firebase