gpt4 book ai didi

javascript - Firebase child_added 仅适用于新项目

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

我正在将 Firebase 和 Node 与 Redux 一起使用。我正在从一个键加载所有对象,如下所示。

firebaseDb.child('invites').on('child_added', snapshot => {
})

这种方法背后的想法是,我们从数据库中获取有效负载,并且只使用一个操作通过 Reducers 更新我的本地数据存储。

接下来,我需要监听任何 更新 关键邀请的 child 。
然而,现在的问题是 child_add 所有现有键以及新添加的键的事件触发器。我不想要这种行为,我只需要新 key ,因为我已经检索了现有数据。

我知道 child_added 通常用于这种类型的操作,但是,我希望减少触发的操作数量,并因此触发渲染。

实现这一目标的最佳模式是什么?

谢谢,

最佳答案

虽然limit方法相当不错而且效率很高,但是还是需要在child_added上加个check对于将要抓取的最后一个项目。另外我不知道是否仍然如此,但是您可能会从以前删除的项目中获得“旧”事件,因此您可能也需要注意这一点。

其他解决方案是:

使用 bool 值来防止旧添加的对象调用回调

let newItems = false

firebaseDb.child('invites').on('child_added', snapshot => {
if (!newItems) { return }
// do
})

firebaseDb.child('invites').once('value', () => {
newItems = true
})

这种方法的缺点是它意味着获取的事件什么都不做,但如果你有一个很大的初始列表可能会有问题。

或者,如果您的邀请上有时间戳,请执行以下操作
firebaseDb.child('invites')
.orderByChild('timestamp')
.startAt(Date.now())
.on('child_added', snapshot => {
// do
})

关于javascript - Firebase child_added 仅适用于新项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43440908/

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