2016-12-11 3 views
0

私は簡単なJavaScriptゲームのfirebaseデータベースで最高得点を記録しようとしています。私は、ユーザーのスコア、javascript変数が、データベースの直接の子である 'highscore'の現在の値よりも大きいかどうかをチェックしたいと思います。 firebaseドキュメントで.set()を使用して更新する前に比較するデータを読み取る

、値のようなものを返すことができます。

var starCountRef = firebase.database().ref('posts/' + postId + '/starCount'); 
starCountRef.on('value', function(snapshot) { 
    updateStarCount(postElement, snapshot.val()); 
}); 

これに伴う問題は、コールバックデータが更新された場合にのみ実行されますが、私は、更新前のデータを比較したいれますそれ。

方法はありますか?

答えて

0

これを実現するには、Firebaseのtransaction()メソッドを使用できます。たとえば、次のようにすることができます。

var latestScore = 99; 

starCountRef.transaction(function(savedHighScore){ 
    if(savedHighScore === null || latestScore > savedHighScore){ 
     return latestScore; // will update starCountRef with this value 
    }else{ 
     return; // nothing to update 
    }   
}); 

エラー処理を含むより完全な例については、ドキュメントを参照してください。

関連する問題