我想在时间戳上使用orderByChild。
但是,效果不佳。它们甚至按升序或降序排序。
结果如下:
第一:1581952308253
第二名:1581671445437
上一个:1583254605108
这是我的代码:
toolboxesRef.orderByChild('timestamp').once('value', snapshot => {
res.json(snapshot.val())
})
我知道我可以使用数组来确定数据应该按升序还是降序排序。
但要知道它甚至没有排序。有人知道这个问题吗?
最佳答案
JSON对象中属性的顺序未定义。因此,一旦调用snapshot.val()
,子节点的顺序就会丢失。
要保持顺序,请使用snapshot.forEach()
遍历子节点:
toolboxesRef.orderByChild('timestamp').once('value', snapshot => {
snapshot.forEach(child => {
console.log(child.val())
})
})
因此,如果要将键和值都返回给
res
,则需要将快照转换为数组:toolboxesRef.orderByChild('timestamp').once('value', snapshot => {
let response = [];
snapshot.forEach(child => {
response.push({ key: child.key, value: child.val() });
})
res.json(response);
})
关于javascript - Firebase orderByChild在时间戳上不起作用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/60512542/