【问题标题】:Firesbase orderByChild doesn't work on timestampFirebase orderByChild 不适用于时间戳
【发布时间】:2020-03-03 17:24:33
【问题描述】:

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

结果如下:

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

这是我的代码:

 toolboxesRef.orderByChild('timestamp').once('value', snapshot => {
    res.json(snapshot.val())
 })

我知道我可以使用数组来确定数据应该按升序还是降序排序。
但知道它甚至不排序。有谁知道这个问题吗?

【问题讨论】:

    标签: javascript firebase-realtime-database


    【解决方案1】:

    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);
    })
    

    【讨论】:

      猜你喜欢
      • 2017-11-09
      • 2019-04-13
      • 1970-01-01
      • 2019-06-06
      • 2020-03-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多