我创建了一个脚本,用于使用 firebase 执行请求。由于我想避免同时对一个关系进行多个查询,因此我使用代码中所示的事务函数。首先,我获取关系的当前状态并检查它是否存在。这似乎有效。第一次是常量current = null
,将执行为data2
添加值的函数。
如果我第二次运行脚本,那么他会成功进入下一个函数(doSecondFunction()
)。不幸的是,这里没有当前数据返回给我。我希望第一次添加的 ref data2
的值。但结果,我得到了null
.
有没有办法在数据库的当前状态下处理事务?
const ref = firebase.database().ref('data2');
ref.once('value', function(snapshot) {
const current = snapshot.val();
if(current == null){
console.log('FIRST');
addValToRefFunction();
}else{
console.log('SECOND');
doSecondFunction(current, ref);
}
});
function doSecondFunction(current, ref){
ref.transaction(function(currentData){
console.log(current); // result is the right value
console.log(currentData); // result is null ?
if (currentData === current){
console.log('Check');
return;
}
}
控制客户端在启动事务时看到的节点的当前状态。根据我的经验,第一次调用回调时,值几乎总是null
,并且回调需要处理它。
另请参阅我的回答 此处 有关该过程的描述:Firebase runTransaction 不起作用 - 可变数据为空