Javascript 使用PushID的Firebase事务
在进行firebase事务时,我对以下行为感到困惑。任何帮助都将不胜感激 问题: 我可以使用以下方法创建一个事务,但是,如果我尝试将pushID从“pid”变量传递到事务引用,它就会中断。有人能解释一下为什么这不起作用,正确的实现方法是什么吗Javascript 使用PushID的Firebase事务,javascript,firebase,firebase-realtime-database,Javascript,Firebase,Firebase Realtime Database,在进行firebase事务时,我对以下行为感到困惑。任何帮助都将不胜感激 问题: 我可以使用以下方法创建一个事务,但是,如果我尝试将pushID从“pid”变量传递到事务引用,它就会中断。有人能解释一下为什么这不起作用,正确的实现方法是什么吗 upvote() { const data = {}; var pid = firebase.database().ref('infos/').push(); var postId = pid.key; console.log(postId); fire
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';
同样在第一个块中,控制台记录正确的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;
});
});
当你说“它坏了”-你的确切意思是发生了什么?什么也没发生。我没有收到任何错误或任何东西,只是交易没有通过?我猜?添加一些错误检查。。。。也许可以使用。捕获一个onComplete函数并将其传递到push10-4,谢谢,我会在其中添加一些,看看会发生什么