我想在时间戳上使用orderByChild。
但是,效果不佳。它们甚至按升序或降序排序。

结果如下:


第一:1581952308253
第二名:1581671445437
上一个:1583254605108


javascript - Firebase orderByChild在时间戳上不起作用-LMLPHP

这是我的代码:

 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/

10-11 05:11