這裏是場景:我從firebaseRef_1
(使用.once
回調)獲得來自Firebase的初始有效內容(例如5個對象)。然後,我將每個收到的對象轉換爲新的Firebase參考。這新產生的裁判看起來是這樣的:收聽爲Firebase生成的動態數組參考的最佳方法?
"data/ccccyyyyotKKiWC2xaV1WZ7H3/things/-KgXo121225H9_Nks1O"
舉例來說,如果我有對.once
通話5點傳入的對象,那麼我將創建5名裁判(請參見下面的代碼片段)。
一旦我創建/產生的REF(多個)欲:
a)創建一個。對聽衆以每5個那些參考文獻的。
b)若(可以說)一段時間新的數據後1「行」到達firebaseRef_1
,我要生成一個新的參考,然後創建一個監聽器 - 但現在,只是新增加的項目 。否則,如果我嘗試遍歷所有(現在的6個)元素,Firebase會拋出一個承諾錯誤,告訴我原始5個元素(refs)已經有一個偵聽器。
,我想最初使用.once
呼叫的原因,是爲了讓我能「在.once
所有」得到整個有效載荷(雙關語意!),這使得填充一個ListView
(反應母語)更快。我嘗試使用.child_added
的方法,但在初始加載(這5行).child_added
被調用5次,所以你可以看到行在我不喜歡的ListView中一個接一個地出現。
我應該如何最好地在代碼中構造這個以實現我上面描述的內容?我是不是應該有一個.once
調用是這樣的:
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) => {
//....
});
});
});
}