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

标签 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. 关键
  2. 值(value)
  3. 他们彼此的相对位置

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

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

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

关于javascript - 根据子值对 Firebase 数据进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58807827/

相关文章:

javascript - 当旁边的 div 被移除时,div 会继续移动

Android - Firebase 用户身份验证 token 会过期吗?

Firebase 通过 ID 获取用户

android - 如何在 Flutter 中折叠通知?使用本地推送通知插件和 CloudFunctions

javascript - Firebase 查询子级的子级是否包含值

java - 当我点击 map 上 3 个制造商中的 1 个时如何从 Firebase 获取数据

javascript - request.ref 不是函数

javascript - Raphael 示例修改 - 分析的新基线

javascript - 我无法调整固定位置

javascript - 为什么在调用 open throw 之前设置 XMLHttpRequest responseType?