- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试测试 Firebase 以允许用户使用 push
发表评论。我想用以下内容显示我检索到的数据;
fbl.child('sell').limit(20).on("value", function(fbdata) {
// handle data display here
}
问题是数据按从最旧到最新的顺序返回 - 我希望按相反的顺序。 Firebase 可以做到这一点吗?
最佳答案
Since this answer was written, Firebase has added a feature that allows ordering by any child or by value. So there are now four ways to order data: by key, by value, by priority, or by the value of any named child. See this blog post that introduces the new ordering capabilities.
The basic approaches remain the same though:
1. Add a child property with the inverted timestamp and then order on that.
2. Read the children in ascending order and then invert them on the client.
Firebase 支持通过两种方式检索集合的子节点:
您现在得到的是按名称排列的,这恰好是按时间顺序排列的。顺便说一句,这并非巧合:当您将一个项目push
到集合中时,会生成名称以确保子项按这种方式排序。引用Firebase documentation for push
:
The unique name generated by push() is prefixed with a client-generated timestamp so that the resulting list will be chronologically-sorted.
Firebase guide on ordered data关于这个主题有这样的说法:
How Data is Ordered
By default, children at a Firebase node are sorted lexicographically by name. Using
push()
can generate child names that naturally sort chronologically, but many applications require their data to be sorted in other ways. Firebase lets developers specify the ordering of items in a list by specifying a custom priority for each item.
获得所需行为的最简单方法是在添加项目时指定始终递减的优先级:
var ref = new Firebase('https://your.firebaseio.com/sell');
var item = ref.push();
item.setWithPriority(yourObject, 0 - Date.now());
您还必须以不同的方式检索子项:
fbl.child('sell').startAt().limitToLast(20).on('child_added', function(fbdata) {
console.log(fbdata.exportVal());
})
在我的测试中,使用 on('child_added'
确保最后添加的几个子项按时间倒序返回。另一方面,使用 on('value'
,按名称顺序返回它们。
请务必阅读section "Reading ordered data" ,它解释了如何使用 child_*
事件来检索(有序)子项。
用于演示这一点的垃圾箱:http://jsbin.com/nonawe/3/watch?js,console
关于javascript - 按发布降序显示帖子,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38932010/
我是一名优秀的程序员,十分优秀!