2016-10-07 6 views
1

Firebase3でfirebase3のアイテムから古い値を取得する方法を探しています。とにかくそれを行うには、それとも私たちはchild_changedイベントをovverideできますか?解決策は、firebase 3 javascript sdkのためにする必要があります。Firebase3は変更イベントをリッスンし、古いデータ値を取得します

var commentsRef = firebase.database().ref('post-comments/' + postId); 

commentsRef.on('child_changed', function(data) { 
    // data variable holds new data. I want the old one before the update happened! 
}); 

答えて

0

イベントで古い値を取得する方法はありません。それが必要な場合は、自分で追跡する必要があります。

var commentsRef = firebase.database().ref('post-comments/' + postId); 
var oldValue; 

commentsRef.on('child_changed', function(snapshot) { 
    // TODO: compare data.val() with oldValue 
    ... 
    oldValue = snapshot.val(); 
}); 
+0

しかし、snapshot.val()は新しいものへの参照を保持します。 –

+0

はい。次回子供が変わると、あなたは古い価値を持つことになります。 –

+0

ok、私はあなたに多くをありがとう、ありがとう、私が探している解決策ではありません。私の問題は、アプリケーションXが変更を行い、アプリケーションYがそれらを追跡しているということです。私は変更を追跡するためにデータ全体のコピーを保持したくない。私は文書でfirebaseメソッドをオーバーライドすることが可能であることを見てきました。とにかくchild_changedイベントをオーバーライドして、新しい値のインストールされた古い値を返すようにするか、とにかくカスタムビヘイビアを持つ新しいイベントリスナーを構築できますか? –

関連する問題