3

我正在运行一个事务来更新需要存储在两个键中的项目。为此,我设置了一个嵌套事务,如下所示,它似乎按预期运行:

firebaseOOO.child('relationships/main').child(accountID).child(friendAccountID).transaction(function(data) {
    data.prop = 'newval';
    firebaseOOO.child('relationships/main').child(friendAccountID).child(accountID).transaction(function(data) {
        return r;
    });
    return r;
});

对此是否有任何陷阱或可能的意外影响?我最担心在负载下陷入某种事务循环,其中每个事务都会取消另一个事务,从而迫使它们重新启动或类似情况。

有没有更好的方法来做到这一点?

我正在使用 NodeJS 客户端。

4

1 回答 1

3

您可能不想从第一个回调中启动另一个事务。无法保证您的第一个事务的函数将运行多少次,尤其是当您尝试更新的位置存在大量争用时。

我相信您在另一个问题中遇到的更好的解决方案是在检查第一个事务是否已提交之后,从完成回调开始第二个事务。

于 2013-04-21T21:21:09.683 回答