我在如何处理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。

最佳答案

好,知道了。您基本上可以设置一个初始值,并使用--减小它。

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;
};

08-16 04:45