gpt4 book ai didi

javascript - firebase child_added 事件问题

转载 作者:行者123 更新时间:2023-12-01 02:41:04 25 4
gpt4 key购买 nike

我想在推送时从 firebase 数据库获取最近添加的子节点,但根本不是数据库的最后一个子节点。

问题是典型的 child_added 事件无论如何都会获取最后一个子元素,即使是在第一次加载页面时也是如此。

即使此时没有添加新节点,此代码也会输出最后一个子节点。

firebase.database().ref("coupons").limitToLast(1).on('child_added', function(snapshot) {
console.log(snapshot.val());
});

这个“黑客”现在对我有用,但如何以适当的方式重写它?

firebase.database().ref().on('child_changed', function() { // listen only when there are some changes in entire db, the key solution for this purpose.
firebase.database().ref("coupons").limitToLast(1).on('child_added', function(snapshot) {
console.log(snapshot.val());
});
});

那么,如果此时没有添加新节点,为什么只是 child_added 监听器起作用?

最佳答案

我通过分配一个 bool 变量来检查第一次启动以跳过页面加载时的 firebase 事件来解决这个问题。

var child_added_first = true;
firebase.database().ref("coupons").limitToLast(1).on('child_added', function(snapshot) {
if (!child_added_first) {
console.log(snapshot.val());
}
child_added_first = false;
});

此外,当我只是简单地从控制台面板中的 firebase 数据库中删除某些节点时,客户端上的 firebase 会触发“child_added”。为什么?

看来是时候看看其他一些具有更友好的 API 和文档的实时 SaaS 数据库了。

关于javascript - firebase child_added 事件问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47563238/

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