Javascript 如何使用承诺;。然后';firebase中事务的组件
我使用的是firebase,需要增加一个计数器,因此Javascript 如何使用承诺;。然后';firebase中事务的组件,javascript,firebase,firebase-realtime-database,transactions,promise,Javascript,Firebase,Firebase Realtime Database,Transactions,Promise,我使用的是firebase,需要增加一个计数器,因此事务似乎是最合适的竞争者。我理解交易使用承诺,但我不清楚(手册中没有示例)如何使用承诺的。然后部分 目前,在原型设计中,我可以通过使用如下警报来“减慢速度”: var oldPosScore = firebase.database().ref('/data/n:'+stateNum[plus] + '/score/'); oldPosScore.transaction (function(increment1) {
事务
似乎是最合适的竞争者。我理解交易使用承诺,但我不清楚(手册中没有示例)如何使用承诺的。然后部分
目前,在原型设计中,我可以通过使用如下警报来“减慢速度”:
var oldPosScore = firebase.database().ref('/data/n:'+stateNum[plus] + '/score/');
oldPosScore.transaction (function(increment1) {
alert ('POSITIVE statement number: ' + stateNum[plus] );
return ((increment1 || 0)*1 + 1);
});
我使用什么语法来设置它?在何处/如何在本用例中工作
编辑(添加数据结构):
我使用的不是firebase按键,而是数字,这样我可以随机选择它们
您可以使用如下交易承诺
var oldPosScore = firebase.database().ref('/data/n:'+stateNum[plus]);
oldPosScore.child('score').transaction (function(increment1) {
return ((increment1 || 0)*1 + 1);
}).then(function(){
alert("transaction successfull");
}).catch(function(err){
alert(err);
});
看我的
我已经编辑了我的Js小提琴。看看这个是否对你有用?谢谢你的回复,但我注意到你把我原来的警报(用来减慢它的速度)留在了原位。我尝试了你的建议,但如果我删除警报,它就不起作用了。。。i、 它仍然没有写入firebase数据库。如果返回值
在之后,那么
可以显示您的数据结构,即ref-ref('/data/n:'+stateNum[plus]+'/score/');。我不明白这个ref为什么要这样使用“data/n:”。编辑后的问题现在显示了数据结构及其原因:)嗨,事务“return”将在完成后将处理后的值更新到firebase数据库,然后调用promise。所以“return”应该是第一个,然后“then”才是有效的。我将firebase ref更改为您在jsFiddle中构建它的方式:var fbRef1=firebase.database().ref('/data/n:'+stateNum[plus])代码>然后是fbRef1.child('score')。事务(函数(递增1)
并且它正在工作。不确定为什么它会与child
一起工作,而不是与以前的参考安排一起工作。想法?