2016-09-17 79 views
0

當我的應用程序啓動時,我會對Firebase進行初始提取以提取所有數據。當我稍後將數據添加到我的Firebase時,我只希望它獲得已添加的新孩子。Firebase:獲取新增子女

我目前正在實現這個目標。有沒有更好的方法,或者是建立在Firebase中的方式?

let initialFetch = false; 

ref.once('value', snap => { 
    // get all child data 
    initialFetch = true; 
}); 

ref.on('child_added', (snap) => { 
    if (!initialFetch) return; 
    // get new child data 
}); 

任何幫助表示讚賞。提前致謝!

回答

0
  1. 如果您需要新數據和後續數據,請使用child_added。它會立即開始爲所有現有的孩子開火,隨後爲所有添加的孩子開火。

  2. ,如果你只希望有新的數據,時間戳添加到您的孩子和ref.orderByChild('timestamp').startAt(Date.now())

  3. 如果同時需要新的數據和後續的數據,但要區別對待初始孩子:使用child_addedvalue就像你現在做的那樣。

另見:How to only get new data without existing data from a Firebase?

+0

我喜歡使用選項1('child_added'),但我需要從另一個API去撿些元數據,一旦我找回我從火力地堡的初始數據。 .on()支持promise嗎? – realph

+0

承諾只能解決一次。每次發生相關事件時,Firebase的on()都會觸發,因此無法返回承諾。如果你只關心一個值,使用'once()'(返回一個承諾)。 –