gpt4 book ai didi

javascript - Firebase:获取现有数据一次,然后使用child_added获取新数据

转载 作者:行者123 更新时间:2023-12-03 02:32:36 25 4
gpt4 key购买 nike

我只想获取一个列表一次,然后将其保存在内存中并使用 child_added 来处理正在创建的项目。

仅使用 child_added 对我来说很不方便,因为这样做会导致我为每个 child_added 事件重新渲染整个列表。我宁愿在页面加载时渲染整个列表,然后再渲染每个添加的项目。

我的代码:

ref.once('value', (snapshot) => {
let messages = []
snapshot.forEach(function(childSnapshot) {
let messageKey = childSnapshot.key
let message = childSnapshot.val()
messages.push(message)
})
// Render messages list once

ref.on('child_added', (message) => {
const messageVal = message.val()
// Append message and re-render list
}
})

问题是我仍然收到每个现有节点的 child_added 事件。

最明智的做法是跟踪我已经处理的项目并在 child_added 中忽略它们吗?或者有没有办法只获取新的更新?

谢谢

最佳答案

如果您引入了一种方法来准确确定在任何给定时间点哪些项目是"new"的,则可以在“child_added”查询中使用该方法来继续“value”查询停止的位置。例如,如果您的数据项具有与每个项目关联的时间戳,并且您知道从“value”查询收到的所有项目的最新时间戳,请修改“child_added”查询以仅筛选 >= 该时间戳的项目。

如果您的数据不能帮助您创建像这样的基于时间的自然排序,或者您已经用尽了 RTDB 查询允许的过滤器,我认为您没有什么其他可以做的(除了可能转移到 Firestore,它为您提供多个过滤器)。

关于javascript - Firebase:获取现有数据一次,然后使用child_added获取新数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48671081/

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