Javascript Firebase:orderByKey是否返回有序快照
这听起来像个愚蠢的问题,但医生说: orderByKey orderByKey()返回firebase.database.Query 生成按键排序的新查询对象 查询对象按键排序,这意味着我可以执行以下操作:Javascript Firebase:orderByKey是否返回有序快照,javascript,firebase,firebase-realtime-database,Javascript,Firebase,Firebase Realtime Database,这听起来像个愚蠢的问题,但医生说: orderByKey orderByKey()返回firebase.database.Query 生成按键排序的新查询对象 查询对象按键排序,这意味着我可以执行以下操作: ref.orderByKey().limitToLast(1) 把最后一个整理好 但如果我这样做: ref.limitToLast(1).on('child_added', function(s) { ref.orderByKey().limitToLast(2).once('va
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
是否总是倒数第二?文档没有明确说明快照已订购。我是否应该继续自己排序以确定
是否有更好的方法来获得第二个倒数第二个,或者如果每次添加一个孩子时只有一个倒数第二个?基本上,我想要的是刚才添加的那个之前的那个
谢谢 您有以下查询:
ref.orderByKey().limitToLast(2)
此查询按键对子节点排序,然后返回最后两项
要按顺序访问结果,请使用Snapshot.forEach():
循环的第一次将为您提供倒数第二个项目,因此,如果您希望捕获该项目:
ref.orderByKey().limitToLast(2).once('value').then(function(snapshot)
{
var isFirst = true;
snapshot.forEach(function(child) {
if (isFirst) {
console.log(child.val());
isFirst = false;
}
});
});
ref.orderByKey().limitToLast(2).once('value').then(function(snapshot)
{
var isFirst = true;
snapshot.forEach(function(child) {
if (isFirst) {
console.log(child.val());
isFirst = false;
}
});
});