我有一些与使用事务的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.
}
});