我正在尝试按每个子帖子的时间戳对我的 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
});
});
提前致谢!
最佳答案
您返回的快照
包含有关与您的查询匹配的子节点的三条信息:
- 关键
- 值(value)
- 他们彼此的相对位置
一旦调用 snapshot.val()
,所有有关排序的信息都会丢失,因为 JSON 对象只能包含键和值。
为了保持顺序,您需要将信息转换为数组:
var values = [];
snapshot.forEach(function(child) {
values.push(child.val());
})
关于javascript - 根据子值对 Firebase 数据进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58807827/