作者:木棉 | 来源:互联网 | 2023-07-29 11:00
我在Firebase中有一个节点不断更新日志文件中的信息.节点是行,行的每个子节点来自post(),因此它具有唯一的ID.当客户端首次加载时,我希望能够获取最后X个条目.我希望我能
我在Firebase中有一个节点不断更新日志文件中的信息.节点是行/,行/的每个子节点来自post(),因此它具有唯一的ID.
当客户端首次加载时,我希望能够获取最后X个条目.我希望我能用一次()做到这一点.然而,从那时起,我想使用带有child_added的on(),以便获得所有新数据.但是,child_added会获取存储在Firebase中的所有数据,并且在初始设置之后,只需要新内容.
我看到我可以在on()上添加limitToLast(),但是,如果我说limitToLast(1)并且有大量条目进来,我的应用程序是否仍会获得所有新条目?还有其他方法可以做到这一点吗?
解决方法:
您需要包含时间戳属性并运行查询.
// Get the current timestamp
var now = new Date().getTime();
// Create a query that orders by the timestamp
var query = ref.orderByChild('timestamp').startAt(now);
// Listen for the new children added from that point in time
query.on('child_added', function (snap) {
console.log(snap.val()
});
// When you add this new item it will fire off the query above
ref.push({
title: "hello",
timestamp: Firebase.ServerValue.TIMESTAMP
});
Firebase SDK具有订购方法,orderByChild()和创建范围startAt()的方法.当您将两者结合使用时,您可以限制从Firebase返回的内容.