javascript - 使用 PushID 的 Firebase 事务

标签 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);

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/

相关文章:

android - Firebase 数据库每 1 小时更新一次使用 AWS lambda 函数

javascript - 尝试执行 google Apps 脚本时的错误值

javascript - PhantomJS 加载页面的时间比 cURL 更多

Swift - 使用 URL 下载的低分辨率 firebase 照片

firebase - 如何正确将DateTime保存到Cloud Firestore

java - android - 比较两个非常大的ArrayList,其中一个从firebase检索

ios - 我怎样才能只从 firebase 获取 key ?

javascript - 如何重叠变量?

javascript - 保留未定义的 JSON.stringify 否则将删除

javascript - 如何在 Firestore 中订购文档?