2017-11-29 12 views
0

firebaseから最近追加された子値をタイムスタンプ比較なしで1つだけ取り出す方法を教えてください。firebase最近追加されたスナップショット値(1つだけ)

ファイアウォールコンソールから追加するときに、同じキー/値(子ノードの完全な配列ではなく、子ノードの配列全体ではない)をクライアント側で取得したいとします。

{users: 
    "id-ue3": "bob", 
    "id-om4": "john", // <-- recently added 
    "id-ker": "kevin" 
} 

firebase.database().ref().on('child_changed', function(snapshot) { 
    .... 
    console.log(last_name); // output --> "john" 
}); 
+2

タイムスタンプなしではこれは可能ではないと思います。私の知る限りでは、Firebaseには「最近追加された子を取得」機能がありません。子が追加されたときに各子内にタイムスタンプを格納し、次にタイムスタンプで注文するクエリを作成し、最新のタイムスタンプに制限する必要があります。 –

答えて

1

最近追加されたデータをJSONで知る方法はありません。 Firebase Realtime Databaseは、データが追加された時点に関するメタデータを保持しないため、JSONに必要な情報を含める必要があります。そうする

二つの方法:

  1. あなたのデータにタイムスタンププロパティを追加します。このためにクライアント側の時間を使用するか、データをデータベースに書き込むときにlet Firebase generate a server-side timestampを使用することができます。
  2. 項目のキーに必要な情報をpush()でエンコードします。これらのIDの詳細については、blog post about push IDsをご覧ください。

child_addedイベントを聞く必要がある可能性が高いことに注意してください。 child_changedイベントは、子ノードを更新するときにのみ発生し、新しい子ノードを追加した場合には発生しません。

+0

ありがとう!私はいくつかの内部メタデータとAPIの実装があると思っていました...ノード設定時にfirebaseでタイムスタンプを生成するか、ノードのIDを自動インクリメントする機会があれば?私はPHPやjsではないことを意味します。機能は非常によく記述されていません:( –

関連する問題