我有一个有序的firebase位置列表。我正在使用属性ut
(更新时间)作为其优先级。我想列出这样的列表,以便很容易获得最新的更新文档。
所以我将优先级设置为负ut
。
var query = fb.child('view/documents').limit(20)
query.on('child_added', function(child) {
console.log(child.val())
console.log(child.getPriority())
})
我希望这样的东西能够返回最新的20个文件,但它不会,它会返回最早的20个。在伪造中我看到列表的方式我期望它,最新文档在顶部,但查询发送给我的是最低点20.这似乎与我对查询的期望相反,即向我发送最低20而不是前20名。
让我感到困惑的是,child_added首先返回预期订单,最新(最小优先级)。但同样,它是列表中最老的。
我做错了什么,或者这是firebase中的错误。
感谢。
答案 0 :(得分:3)
我理解你的困惑,但这真的是它应该如何运作:limit(20)
返回20个最重要的孩子,从最重要的20个孩子开始,以绝对最优先的孩子结束(然后在添加新子节点时更新,其优先级足以制作列表。
您可以在https://www.firebase.com/docs/queries.html看到示例,其中优先级是发送消息的Unix时间戳,messageListRef.limit(100)
用于获取100条最新消息(即最大的100条消息) -priority messages)。
答案 1 :(得分:2)
我认为你在寻找的是:.startAt() 在limit()之前,将以正确的顺序返回数据,没有关键字,您将始终获得最后指定的子项数。
以下是参考:https://www.firebase.com/docs/javascript/query/limit.html