首页 > 解决方案 > 更新 Firebase 中的多个节点,但只通知侦听器一次

问题描述

我有以下结构(比这复杂一点,有多个级别和分支)我在 ZMainBranch 有一个侦听器,等待下面不同级别的更新。

我有一个基于在不同分支上更改的数据的函数,它在 ZMainBranch 下更新此属性。

问题是 ZMainBranch 上的更新是通过多个步骤完成的,这会多次调用 ZMainBranch 上的侦听器。

在此处输入图像描述

我想要的是一次完成所有更新,这样监听器只会被调用一次。

一种解决方案是在 ZMainBranch 级别进行更新,但这需要读取孔数据,对其进行映射,更改需要更改的内容然后写入,这对于分支下各处的小改动有很多工作要做。

标签: firebasefirebase-realtime-database

解决方案


如果您在一个位置执行多次写入,则可以预期该位置的活动侦听器可能会被多次调用。要避免这种情况,您无能为力。

您的替代方法是将所有对不同子项的写入折叠到单个多位置更新中。也可以使用事务,只要您的所有客户端都在该位置进行写入协调。

阅读有关多位置更新的信息:

https://firebase.googleblog.com/2015/09/introducing-multi-location-updates-and_86.html


推荐阅读