根据子值对Firebase数据进行排序

时间:2019-11-11 19:53:03

标签: javascript firebase firebase-realtime-database

我正在尝试按每个后代子代的时间戳对Firebase查询进行排序。相反,我只是获取未排序的存储在数据库中的数据。我正在使用firebase npm软件包。

数据结构如下:

posts
   -Lsx-tFbXe83gANXP3TD
       -timestamp: 1466171493193
   -Lsx-sWzXe83gANWNM3R
       -timestamp: 1466171493111

这是我使用的JavaScript代码:https://firebase.google.com/docs/database/web/lists-of-data

firebase.database()
      .ref("posts")
      .orderByChild("timestamp")
      .on("value", function(snapshot) {
        _this.setState({
          posts: Object.values(snapshot.val()),
          loading: false
      });
});

谢谢!

1 个答案:

答案 0 :(得分:1)

您获得的snapshot包含与查询相匹配的有关子节点的三段信息:

  1. 钥匙
  2. 价值
  3. 彼此之间的相对位置

由于JSON对象只能包含键和值,因此一旦调用snapshot.val(),所有有关排序的信息都会丢失。

要保持顺序,您需要将信息转换为数组:

var values = [];
snapshot.forEach(function(child) {
  values.push(child.val());
})