这听起来像是一个愚蠢的问题,但是文档说:
orderByKey
orderByKey()返回firebase.database.Query
生成按键排序的新查询对象。
查询对象按键排序,这意味着我可以做到:
ref.orderByKey().limitToLast(1)
获得最后的顺序。
但如果我这样做:
ref.limitToLast(1).on('child_added', function(s)
{
ref.orderByKey().limitToLast(2).once('value').then(function(snapshot)
{
var val = snapshot[Object.keys(snapshot)[0]];
});
});
val
总是倒数第二吗?文档没有具体说明快照是有序的。我应该自己继续对它进行排序以确保吗?
有没有更好的方法来获得倒数第二个,或者如果每次添加一个孩子时只有一个倒数呢?基本上,我要先添加一个。
谢谢!
答案 0 :(得分:1)
您有以下查询:
ref.orderByKey().limitToLast(2)
此查询按键对子节点进行排序,然后返回最后两项。
要按顺序访问结果,请使用Snapshot.forEach()
:
ref.orderByKey().limitToLast(2).once('value').then(function(snapshot)
{
snapshot.forEach(function(child) {
console.log(child.val());
});
});
第一次执行循环将为您提供倒数第二个项目,因此,如果您想捕获它:
ref.orderByKey().limitToLast(2).once('value').then(function(snapshot)
{
var isFirst = true;
snapshot.forEach(function(child) {
if (isFirst) {
console.log(child.val());
isFirst = false;
}
});
});