Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/475.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用PushID的Firebase事务_Javascript_Firebase_Firebase Realtime Database - Fatal编程技术网

Javascript 使用PushID的Firebase事务

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

在进行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';
同样在第一个块中,控制台记录正确的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,谢谢,我会在其中添加一些,看看会发生什么