2017-03-07 6 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; 
};