大佬教程收集整理的这篇文章主要介绍了node.js – NodeJS中的Firebase事务总是运行3次?,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
例如这段代码:
firebaSEOOO.child('ref').transaction(function(data) { console.log(data); return data; });
null null i1: { a1: true }
我原以为它只打印最后一项.
要回答评论中的问题,回调也是如此:
firebaSEOOO.child('ref').transaction(function(data) { console.log(data); return data; },function(error,committed,snapshot) { if (error) console.log('Failed'); else if (!committed) console.log('aborted'); else console.log('committed'); console.log('fin'); });
产生以下输出:
null null i1: { a1: true } committed fin
在发布问题之前,我已经阅读了交易如何工作的详细信息,因此我尝试将applyLocally设置为false,如下所示:
firebaSEOOO.child('ref').transaction(function(data) { console.log('hit'); return data; },function(){},falsE);
但它仍然会击中3次(只是双重检查),所以我认为这是不同的东西.在交易之前获得“价值”确实“按预期”工作,因为它只会点击一次,而且不管applyLocally设置的是什么,所以我不确定applyLocally的作用是什么?这就是我在交易前获得价值的意思:
firebaSEOOO.child('ref').once('value',function(data) { console.log('1'); firebaSEOOO.child('ref').transaction(function(data) { console.log('2'); return data; }); });
输出:
1 2
@michael:怎么能利用这种行为?事务主要是让数据使用自身来修改自身 – 原型增量方案.因此,如果我需要将现有值10添加1,并继续使用11的结果,那么函数命中的前两次我将得到一个我需要处理的错误结果,最后是正确的结果第三次打到11.我如何利用这两个初始1?另一种情况(也许我不应该为此使用事务,但如果它像我预期的那样工作使代码更清晰)是插入一个值,如果它还不存在.如果事务只触发一次,则空值意味着该值不存在,因此您可以,例如,在这种情况下,将计数器初始化为1,否则将值1添加到任何值.有了噪声空值,这是不可能的.
似乎所有这一切都是为了简单地使用“一次”模式而不是经常使用?
交易模式:
firebaSEOOO.child('ref').once('value',function(data) { console.log('1'); firebaSEOOO.child('ref').transaction(function(data) { console.log('2'); return data; }); });
以上是大佬教程为你收集整理的node.js – NodeJS中的Firebase事务总是运行3次?全部内容,希望文章能够帮你解决node.js – NodeJS中的Firebase事务总是运行3次?所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。