进行 Firebase 事务时,我对以下行为感到困惑。任何帮助将不胜感激。
问题: 我可以使用以下命令创建事务,但是,如果我尝试将 PushID 从“pid”变量传递到事务引用,则会中断。有人可以解释为什么这不起作用,以及正确的实现方法是什么?
upvote() {
const data = {};
var pid = firebase.database().ref('infos/').push();
var postId = pid.key;
console.log(postId);
firebase.database().ref('infos/' + postId +'/vote').transaction(function(value) {
if (value) {
value++;
}
return value;
});
}
现在,如果我只是将 PushID 硬编码到“postId”变量中,它就可以工作:
var postId = '-LNDP-7eKMxxUHqeRNWN';
此外,在第一个 block 中,控制台记录了正确的pushID,但不创建事务。
我错过了什么?
谢谢..
编辑:我认为使用push()实际上试图将一个新的id推送到与事务不相符的变量..也许?
最佳答案
考虑到当您使用预定的推送 ID 时您的代码可以正常工作,我假设问题是由于在返回推送 ID 之前调用事务造成的。
尝试以下操作:
firebase.database().ref('infos/').push().then(pushed => {
firebase.database().ref('infos/' + pushed.key +'/vote').transaction(function(value) {
if (value) {
value++;
}
return value;
});
});
关于javascript - 使用 PushID 的 Firebase 事务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52547258/