gpt4 book ai didi

firebase - 如何丢弃 Firebase 数据库中的初始数据

转载 作者:行者123 更新时间:2023-12-03 21:06:27 24 4
gpt4 key购买 nike

我正在制作一个简单的应用程序,通知客户其他客户点击了一个按钮。我使用以下方法将点击存储在 Firebase ( db ) 中:

db.push({msg:data});

所有客户端都会通过 on 收到其他用户点击的通知, 如
db.on('child_added',function(snapshot) { 
var msg = snapshot.val().msg;
});

但是,当页面首次加载时,我想丢弃堆栈上的任何现有数据。我的策略是调用 db.once()在我定义 db.on('child_added',...) 之前为了得到 child 的初始数量,然后用它来丢弃对 db.on('child_added',...) 的调用次数.

不幸的是,所有对 db.on('child_added',...) 的调用都发生在我能够获得初始计数之前,所以它失败了。

我怎样才能有效而简单地丢弃初始数据?

最佳答案

如果我正确理解您的问题,听起来您只需要自用户访问该页面以来添加的数据。在 Firebase 中,您描述的行为是设计使然,因为数据总是在变化,并且没有“旧”数据与"new"数据的概念。

但是,如果您只想显示页面加载后添加的数据,请尝试忽略之前的所有事件,直到完整的子项集至少加载一次。例如:

var ignoreItems = true;
var ref = new Firebase('https://<your-Firebase>.firebaseio.com');
ref.on('child_added', function(snapshot) {
if (!ignoreItems) {
var msg = snapshot.val().msg;
// do something here
}
});
ref.once('value', function(snapshot) {
ignoreItems = false;
});

这种方法的替代方法是也以优先级编写新项目,其中优先级为 Firebase.ServerValue.TIMESTAMP (当前服务器时间),然后使用 .startAt(...)使用当前时间戳查询。然而,这比上述方法更复杂。

关于firebase - 如何丢弃 Firebase 数据库中的初始数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19883736/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com