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

时间:2018-02-07 18:41:12

标签: javascript firebase firebase-realtime-database

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

仅使用my-component.vue对我来说不方便,因为这样做会导致我为每个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 } }) 中忽略它们?或者有没有办法只获得新的更新?

由于

1 个答案:

答案 0 :(得分:1)

如果您介绍了在任何给定时间点准确确定哪些项目为“新”的方法,您可以在“child_added”查询中使用该方法来选择“值”查询中断的位置。例如,如果您的数据项具有与每个项目相关联的时间戳,并且您知道从“值”查询收到的所有项目的最新时间戳,请修改“child_added”查询以仅筛选项目> =该时间戳

如果您的数据无法帮助您创建像这样的项目的自然时间顺序排序,或者您已经用尽了RTDB查询的一个允许过滤器,我认为您还可以做其他事情。 (除了可能移动到Firestore,它会为您提供多个过滤器)。