Kei*_*ter 35 firebase firebase-realtime-database
我有一个应用程序,每5秒左右就会有新的孩子被添加到Firebase.我有成千上万的孩子.
在应用程序加载时,我想要处理最初的数千个,而不是每隔5秒钟处理一次的后续子节点.
您可能建议我使用值,处理所有内容,然后使用children_added.但我相信如果处理时间过长,我有可能错过一点.
有没有办法在Firebase中做到这一点,保证我不会错过任何一点?
jwn*_*ngr 63
由于child_added初始预加载数据的事件将在value事件触发父事件之前触发,因此您可以将value事件用作一种"初始数据加载"通知.这是我从另一个类似的StackOverflow问题稍微修改过的一些代码.
var initialDataLoaded = false;
var ref = new Firebase('https://<your-Firebase>.firebaseio.com');
ref.on('child_added', function(snapshot) {
if (initialDataLoaded) {
var msg = snapshot.val().msg;
// do something here
} else {
// we are ignoring this child since it is pre-existing data
}
});
ref.once('value', function(snapshot) {
initialDataLoaded = true;
});
Run Code Online (Sandbox Code Playgroud)
值得庆幸的是,Firebase将智能地缓存此数据,这意味着创建一个child_added和一个value侦听器只会下载一次数据.为已经越过网线的数据添加新的Firebase监听器非常便宜,您应该习惯于经常做这样的事情.
如果您担心在实际不需要时下载所有初始数据,我会在评论中按照@ FrankvanPuffelen的建议使用带时间戳的查询.这非常有效,并使用Firebase查询进行了优化.
| 归档时间: |
|
| 查看次数: |
12834 次 |
| 最近记录: |