Javascript 如何使用承诺;。然后';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) {

我使用的是firebase,需要增加一个计数器,因此
事务
似乎是最合适的竞争者。我理解交易使用承诺,但我不清楚(手册中没有示例)如何使用承诺的
。然后
部分

目前,在原型设计中,我可以通过使用如下警报来“减慢速度”:

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
一起工作,而不是与以前的参考安排一起工作。想法?