2017-03-07 126 views
1

我在如何处理Firebase v3中的交易方面苦苦挣扎。Firebase v3交易和承诺

我试过如下:

function fbTransaction(childRef) { 
    var qTrans = Q.defer(); 

    firebase.database().ref(childRef).transaction() 
    .then(function(success){ 
     qTrans.resolve(success); 
    }).catch(function(error){ 
     qTrans.reject(error); 
    }); 

    return qTrans.promise; 
}; 

因此,我试图在位置childRef更新的价值。当我像我一样尝试时,它不会回复任何承诺。基本上没有任何反应。

我也试过了Firebase docs的例子,但是它对postsuccess都一直返回null。

回答

2

好吧,算出来。你基本上可以设置一个初始值并用--来减少它。

function fbTransaction(childRef) { 
    var qTrans = Q.defer(); 
    firebase.database().ref(childRef).transaction(function(post) { 
     if (post != null) { 
      post++; 
     } else { 
      post = 1; 
     } 
     return post; 
    }).then(function(success){ 
     qTrans.resolve(); 
    }).catch(function(error){ 
     qTrans.reject(error); 
    }); 
    return qTrans.promise; 
};