【问题标题】:Firebase Transactions of Add, Delete on Multiple NodesFirebase 在多个节点上的添加、删除事务
【发布时间】:2017-08-15 22:52:59
【问题描述】:

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

Firebase Structure

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

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

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

【问题讨论】:

    标签: android firebase firebase-realtime-database transactions


    【解决方案1】:

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

    改为使用multi-location update,通过一次调用数据库来删除受影响的节点:

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

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

    【讨论】:

    • 你是冠军。尽管我在这个问题上搜索了很长时间,但我不知道有类似 updateChildern 的东西。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-19
    • 1970-01-01
    • 2018-12-25
    • 2018-07-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多