【发布时间】:2014-05-16 18:47:21
【问题描述】:
我正在尝试创建一个工作进程来侦听 Firebase 以了解对特定集合的添加/更改。在任何一种情况下,都应该运行一个进程,该进程最终会根据它在那里找到的内容将一些额外的数据写回集合。我遇到的问题是这会导致无限循环,因为 child_changed 将再次触发回调,因为我正在更改它正在侦听的同一棵树中的模型。此外,在第一次通过 child_add 触发 child_changed 时存在初始重复工作。
我想出的唯一解决方案是以某种方式将数据放入 Firebase,表明不应发生更新(is_dirty: false,或类似的东西)。我对那个解决方案不是特别满意,因为这要求客户端在添加/更改应该触发服务器处理的内容时参与翻转标志或其他内容。我希望他们不要那么耦合。我当然喜欢维护某种缓存集合以比较更改的想法,因为这会复制大量数据。
我还考虑在更新之前以某种方式使用off(之后将其重新打开),但我担心这会导致我错过可能在那个时间窗口内发生的更改。也许这是交易的情况?
这里的最佳做法是什么?目前,我的代码如下所示:
collectionRef.on('child_added', processModel);
collectionRef.on('child_changed', processModel);
var processModel = function (modelSnapshot) {
// do some stuff that updates model
}
【问题讨论】:
标签: javascript firebase