ここに、シナリオがあります:Firebase(例:5オブジェクト)からの初期ペイロードをfirebaseRef_1
(.once
コールバックを使用)から取得します。次に、受け取った各オブジェクトを新しいFirebase refに変換します。その新しく生成されたrefは次のようになります。例えば、私はその.once
コールに5つの入ってくるオブジェクトを持っている場合はFirebase用に生成されたリファレンスの動的配列をリッスンする最善の方法は?
"data/ccccyyyyotKKiWC2xaV1WZ7H3/things/-KgXo121225H9_Nks1O"
、その後私は(以下のコードを参照してください)5、参考文献を作成します。
a)は、これら5つの参照文献のそれぞれに.onリスナーを作成します。
は、私が作成したら/ REF(S)私はしたいが発生しました。 (が言うことができます場合は
b)参照)、新たなデータの後に1「行」のfirebaseRef_1
に到着したいくつかの時間、私は新しいREFを生成して、リスナーを作成したい - しかし、今、ちょうどその新しく追加された項目ため。それ以外の場合、(現在の6つの)要素のすべてをループしようとすると、元の5つの要素(refs)にすでにリスナーが添付されていると私は警告します。
私は「.once
で、すべての」全体のペイロードを得ることができるように、私が最初に.once
コールを使用するように考えていた理由は、ある(しゃれが意図した!)速い(ネイティブ反応)ListView
を移入せています。私は.child_added
のアプローチを使用してみましたが、初期ロード(これらの5行)では.child_added
が5回呼び出されますので、私は好きではないListViewで行が1つずつ表示されることがわかります。
私は上記で説明したことを達成するためにコードでこれを最もうまく構成する必要がありますか?
generateTheRefs() {
firebase.database()
.ref('data/' + firebaseUID + '/initialPath')
.once('value', (snapshot) => {
snapshot.forEach(childSnapshot => {
var childData = childSnapshot.val();
let path = `data/${childData.item1}/things/${childData.item2}`;
//now create a .on listener
firebase.database()
.ref(path)
.on('value', (snapshot) => {
//....
});
});
});
}