【发布时间】:2023-02-03 23:36:54
【问题描述】:
我在我的实时数据库中使用事务如下:
admin.database().ref(`/users/${uid}`).transaction((user) => {
if (user) {
console.log("user exists");
// ... modify the user ...
admin.database().ref(`/notifications/${user.guid}`).transaction((notification) => {
// modify notification object
}
return user;
} else {
console.log("user did not exist");
return { /* information about a new user */ };
}
});
结果很奇怪。我看到两个 console.logs,如下所示:
> user did not exist
> user exists
即使用户对象存在。最终发生的是我创建了一个用户,覆盖了旧用户。
我已经尝试删除事务中的嵌套通知事务,然后它似乎可以工作,但我仍然首先得到相同的> user did not existconsole.log()输出,但不清楚为什么会这样。
我想这里有两个问题。首先是不存在的代码路径执行的原因,其次是如果不是这样,我应该如何将我从事务的读取部分检索到的值传递给另一个写入。
谢谢!
【问题讨论】:
标签: node.js firebase firebase-realtime-database transactions nested-transactions