在实时数据库中使用事务,值为空

时间:2020-05-25 03:59:16

标签: javascript firebase firebase-realtime-database

我有一些与使用事务的Firebase Realtime Database相关的代码,我需要修复这些代码,因为它不能完全满足我的要求。

我不习惯交易,所以我一定做错了事。

下面的javascript代码可能与该问题不太相关,但是它应该可以帮助读者了解我打算做什么。问题在于该代码始终至少调用一次,而currentData为null,从而导致不良结果。我已经读到,这是Firebase事务工作方式的预期行为(除非有本地侦听器)。但是我应该怎么做才能避免这种情况?如果可以的话,如何设置本地侦听器?

const myRef = topRef.child(someKey+'/'+item);
myRef.transaction(function(currentData) {
  console.log('transaction::currentData='+currentData);
  if (currentData === null) {
    console.log('currentData='+currentData);
    const itemCntRef = topRef.child(someKey+'/count');
    itemCntRef.transaction(function(cntVal) {return cntVal + 1;});
    return {existence:true};
  } else {
    // The item is already there.
    console.log(item+' is already there.');
    return; // Abort the transaction.
  }
});

0 个答案:

没有答案