我正在尝试根据子键的值对Firebase中的对象列表进行排序,但似乎失败了。我使用了过滤器ref.orderByChild('sort_order')
,但是返回的数据不是排序格式。给出下面的节点结构,有人可以帮助我指出我哪里出错了吗?
"widgets":{
"fruits":{
"sort_order":"2",
"data":[{
"thread_id":"201902001",
"source_port":"Shanghai",
"source_port_latitude":"31.218399",
"source_port_longitude":"121.434563",
"destination_port":"Singapore",
"destination_port_latitude":"1.32046",
"destination_port_longitude":"103.72042",
"created_on":"2019-02-01 01:02:03"
}]
},
"vegetables":{
"sort_order":"1",
"data":[{
"thread_id":"201902004",
"source_port":"Jebel Ali",
"source_port_latitude":"24.99626",
"source_port_longitude":"55.12536",
"destination_port":"Port Klang",
"destination_port_latitude":"2.999852",
"destination_port_longitude":"101.39283",
"created_on":"2019-02-04 10:11:12"
}]
}
}
答案 0 :(得分:0)
我无法用您的数据重现该问题。有关我的工作代码,请参见https://jsbin.com/zaguyad/edit?js,console。
最可能引起问题的原因是如何处理查询返回的数据。维护订购信息的正确方法是使用DataSnapshot.forEach()
:
ref.child("widgets").orderByChild('sort_order')
.once('value', snapshot => {
snapshot.forEach(child => {
console.log(child.key);
})
})