我正在运行一个事务来更新需要存储在两个键中的项目。为此,我设置了一个嵌套事务,如下所示,它似乎按预期运行:
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 客户端。
最佳答案
您可能不想从第一个事务的回调中开始另一个事务。无法保证您的第一笔交易的功能将运行多少次,特别是如果您尝试更新的位置有很多争用。
一个更好的解决方案(我相信您在另一个问题中想到了)是在检查第一个事务已提交后,从完成回调开始第二个事务。
关于node.js - Firebase 中嵌套事务的含义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16125334/