我正在使用我的nodejs应用程序中的firebase admin api,使用事务写入firebase实时数据库中的特定位置。我观察到,即使没有其他客户机使用数据库,事务处理程序也会被调用两次。
firebaseAdmin.database().ref('some/path').transaction(currentData => {
console.log('transaction handler got called');
return {'abc': 'def'};
}, null, false).then(value => {
console.log('transaction complete')
}).catch(reason => {
console.log('transaction failed. ' + reason);
});
我可以观察到这一点
transaction handler got called
为上述代码的每次执行记录两次。
我知道,如果其他客户机写入窗口中的db路径,则处理程序可能会被多次调用
currentData
为事务读取,并尝试将新数据提交到db路径。但是,在我的例子中没有其他客户机,因此我无法理解为什么需要调用两次事务处理程序。
有人知道这是什么原因吗?