サーバタイムスタンプ付きのFirebaseプッシュがあります。ここでは、child_added
リスナーがすでにリスンしています。Firebase.ServerValue.TIMESTAMPは直ちに別の値を返しますchild_added
非常に驚くべきことに、child_added
イベントに返される値は、実際にはFirebaseデータベースノードに格納されている値と約300ms異なります。同じノードでの後続の読み取りは、ノードに格納されている「正しい」時間を提供します。プッシュが発生したときにトリガーされるのは、最初のchild_addedイベントだけです。つまり、間違った時刻が返されます。
誰でもこの問題を観察しましたか?
ref = new Firebase(/some/path);
ref.on('child_added', function (childData) {
console.log('childData.pushTime = ' + childData.pushTime);
});
ref.push({pushTime: Firebase.ServerValue.TIMESTAMP});
実際にはパスに保存されているものから〜300msの間にconsole.logの出力がオフになります。
私は以前にタイムオフセットもチェックしましたが、時間差は一致しませんでした。リクエストがサーバに到着するまでの時間についてのあなたの説明は、私が逃したものです。 これは、古いレコードと新しいレコードを比較するためにタイムスタンプと一致させる予定だったアルゴリズムを除外しています。一口! – Nat
'child_changed'も聴くと、書き込みが完了すると正しい時刻を含むスナップショットで起動します。 – cartant
誠に申し訳ありません。だから、間違った 'TimeStamp'を避ける簡単な方法は何でしょうか? 'onChildAdded 'for' TimeStamp 'は正確ではないので、私はちょうどこのようなプッシュをするときに' onChildChanged 'を使うべきですか? – Erik