2016-09-17 84 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()'(返回一个承诺)。 –