Javascript Firesbase orderByChild不';我不能在时间戳上工作

Javascript Firesbase orderByChild不';我不能在时间戳上工作,javascript,firebase-realtime-database,Javascript,Firebase Realtime Database,我想在时间戳上使用orderByChild。 但效果不好。它们甚至按升序或降序排序 结果如下: 第一:1581952308253 第二名:1581671445437 最后:1583254605108 这是我的代码: toolboxesRef.orderByChild('timestamp').once('value', snapshot => { res.json(snapshot.val()) }) 我知道我可以使用数组来确定数据应按升序或降序排序。 但要知道,它甚至

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

结果如下:

  • 第一:1581952308253
  • 第二名:1581671445437
  • 最后:1583254605108

这是我的代码:

 toolboxesRef.orderByChild('timestamp').once('value', snapshot => {
    res.json(snapshot.val())
 })
我知道我可以使用数组来确定数据应按升序或降序排序。

但要知道,它甚至不起作用。有人知道这个问题吗?

JSON对象中属性的顺序未定义。因此,只要调用
snapshot.val()
,子节点的顺序就会丢失

要维护顺序,请使用快照.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);
})