Node.js Firebase RTDB批处理事务(同时增加2个值)
我知道,您可以使用update进行批处理的、原子的全有或全无更新,但是您可以对事务执行相同的操作吗 目前,我正在尝试在接受好友请求的同时增加用户好友数(2个用户) 这里是我正在做的工作,但如果出现问题,它将导致坏的数据不一致,发生了几次Node.js Firebase RTDB批处理事务(同时增加2个值),node.js,firebase,firebase-realtime-database,transactions,atomic,Node.js,Firebase,Firebase Realtime Database,Transactions,Atomic,我知道,您可以使用update进行批处理的、原子的全有或全无更新,但是您可以对事务执行相同的操作吗 目前,我正在尝试在接受好友请求的同时增加用户好友数(2个用户) 这里是我正在做的工作,但如果出现问题,它将导致坏的数据不一致,发生了几次 const upOneFriend = firebase .database() .ref("users") .child(friend.uid) .child("friendCount"); const upOneCur
const upOneFriend = firebase
.database()
.ref("users")
.child(friend.uid)
.child("friendCount");
const upOneCurrentUser = firebase
.database()
.ref("users")
.child(userUid)
.child("friendCount");
upOneFriend
.transaction(currentCount => {
return currentCount + 1;
})
.then(() => {
upOneCurrentUser.transaction(currentCount2 => {
return currentCount2 + 1;
});
})
.catch(() => {
console.log("error increment");
});
正如我所说,这是可行的,但我需要同时做到这一点!我环顾四周,没有发现任何与实时数据库的批处理事务相关的内容
干杯。Firebase实时数据库中的事务在单个节点上工作。如果需要更新事务中的多个节点,则需要在要更新的节点之上的第一个公共节点上运行事务。在您的场景中,这意味着您要跨
用户运行事务,这可能会显著降低吞吐量
另一种方法是使用多位置更新。但是,由于多位置更新不会自动防止并发写入,因此必须在写入本身中包含防止并发写入的信息
有关这方面的示例,请参见我的答案:,并且感谢您的回复!我不清楚这一点,是否有任何例子,你可以带我到,或者你能给我一个小代码片段,看看如何可以做到这一点?添加了一个链接到一个例子,虽然没有明确的复制/粘贴的例子。老实说,除非你已经对Firebase很有经验,否则我建议你还是坚持第一段。@hugger你有过这样的经历吗?如果我的答案有用,请单击向上投票按钮(▲) 如果它回答了您的问题,请单击复选标记(✓) 接受它。这样别人就会知道你已经得到了(足够的)帮助。也请参见