gpt4 book ai didi

cordova - Firebase:在使用 .once() 检索所有子节点后监听它们的变化?

转载 作者:行者123 更新时间:2023-12-05 03:10:56 27 4
gpt4 key购买 nike

引用 Is it possible to avoid OOM when loading a large data set using Cordova? 给出的答案和 https://stackoverflow.com/a/28589093/3005222 ,我改编了 JSFiddle http://jsfiddle.net/firebase/AgBN7/由 Kato 提供,用于递归地翻阅大型 Firebase 数据集(而不是依赖于用户单击下一页按钮)。

它遍历 100 个节点的页面,使用 ref.startAt(pri, lastKey).limitToFirst(100).once("value", ...) 并将数据保存到局部变量。然后进入下一页,依此类推。最后,我有一个在我的应用程序中使用的数据的大型本地副本。这很好,但我现在想听取变化,我有两个选择:

选项 1:更改分页代码以使用 .on() 而不是 .once()

选项 2:获取所有数据后,有一个ref.on("value", ...)

我的问题是,从性能角度来看,哪个选项更好?我做了这整个分页事情,因为我的 Cordova 应用程序在使用 ref.on("value",...) 一次检索所有数据并将其更改为分页方法时崩溃了.现在我想知道如果我选择选项 1,它会创造很多活跃的听众吗?如果我选择选项 2,它是否会使分页变得多余,即如果我已经使用 .once() 遍历了所有数据,添加一个 .on() 监听器会做什么?

最佳答案

你可以监听child_changed在你的节点的父节点上。

ref.on('child_changed', 回调)

每次编辑子项时,都会为您提供该子项的更新值。

编辑

  • value 为您提供它所附加的节点的值
  • child_addedchild_changed 为您提供它附加到的节点的子节点的值

例如,如果您将这些事件的监听器附加到包含用户列表的节点:

  • value 将在每次添加/编辑用户时为您提供所有用户
  • child_addedchild_changed 将只为您提供已编辑/添加的用户

如果您只想在客户端中保持数据同步,您可以同时使用 child_addedchild_changed 以及在本地数据库中创建/更新值的相同回调复制。

关于cordova - Firebase:在使用 .once() 检索所有子节点后监听它们的变化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38139773/

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