Firebase 多节点添加、删除事务

top*_*263 2 android transactions firebase firebase-realtime-database

我有 Firebase 结构,其中包含 Android 中的用户和组。这是一个多对多的关系。

Firebase 结构

当我在组节点中添加任何用户时,我也在用户节点中添加组,但不使用任何类型的事务机制。

现在我需要执行删除组的情况,它将删除组节点以及每个用户加入的用户节点内的组属性。在这种情况下必须有一个事务。到目前为止,我已经处理了依赖于同一节点但不依赖于不同节点的事务代码。

我需要知道在多个节点上添加和删除的情况下如何实现事务或者有更好的实现方式。

Fra*_*len 5

Firebase 数据库事务在单个节点上工作。因此,如果您想使用事务,则必须将其向上移动以处理整个数据库。这肯定会扼杀您的应用程序的任何可扩展性,因此不是一个好主意。

而是使用多位置更新通过一次对数据库的调用来删除受影响的节点:

Map updates = new HashMap();
updates.put("/users/-Kr....", null);
updates.put("/groups/-Kr.../users/-Kr...", null);
ref.updateChildren(updates);
Run Code Online (Sandbox Code Playgroud)

现在整个操作要么成功要么失败,不需要事务。