当前位置: 首页 > 知识库问答 >
问题:

Firebase在多个节点上进行添加、删除交易

皇甫建木
2023-03-14

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

Firebase结构

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

现在,我需要执行delete group案例,其中将删除group节点以及每个用户加入的用户节点内的group属性。此场景中必须有一个事务。到目前为止,我已经处理了依赖于相同节点但不依赖于不同节点的事务代码。

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

共有1个答案

左宁
2023-03-14

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

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

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

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

 类似资料:
  • 我试图在文件如下示例:如何为Firebase构建云函数,以便从多个文件部署多个函数?。 特别是,我有一个: 现在在index.ts我可以导入并附加一个用户身份验证侦听器,以便在创建新用户时触发,即: 然而,据我所知,只有实际上按预期工作,并且导出。userEvents似乎不会在创建新用户时触发。 ===================================================

  • 我正在使用Firebase作为web应用程序。它是用纯Javascript编写的,不使用外部库。 我可以“推送”并使用“.on(”child_added“)”检索数据,但是“.remove()”不能按照它所说的方式工作。根据 API, “Firebase.remove()-删除此Firebase位置的数据。子位置的任何数据也将被删除。删除的效果将立即可见。” 然而,移除不是立即发生的;只有在整个脚

  • 有没有办法在Firebase中执行原子删除? 医生说 您还可以通过将nil指定为另一个写入操作(如setValue或updateChildValues)的值来删除。。。以这种方式进行的同步更新是原子性的:要么所有更新都成功,要么所有更新都失败。 但我无法让它工作。我下面的代码返回错误 无法在处存储类型为\u SwiftValue的对象。只能存储NSNumber、NSString、NSDiction

  • 假设我的数据库结构如下: 当删除任何用户1\u UID时,我想从所有节点a、b、c中删除用户1\u UID。 例如,如果我从节点b中删除了key1:user1\u-UID,是否有一种方法也可以从节点a和节点c中删除key1:user1\u-UID,而无需遍历所有节点?还是我的数据结构错误(请注意,这些数据可能嵌套得更深)?

  • 一直在阅读文件和其他职位,但我无法删除一个节点。我试图通过一个值来选择节点。 然后在结果上调用 remove 方法 除了空错误值之外,什么都不会发生。我使用的是最新的firebase,大多数示例都是针对旧版本的,因此我不确定是否需要获取密钥,然后尝试删除该密钥作为参考? 这是第一次使用 firebase,所以我不确定我是否正确保存了数据。这是要保存的代码。 和屏幕截图

  • 我遵循此处的指南从firebase数据库中删除值。这是我的数据结构。 这是我正在使用的代码。 发生的情况是,在这个调用中删除了整个/bookmarks节点,而不仅仅是对所需书签的引用。如何实现只删除一个书签而不是删除整个节点?