何时在Firebase中加载数据?

时间:2014-06-23 08:53:39

标签: javascript firebase

我的数据按日期和增量ID排序,如下所示:

  • 20140622
    • 值_1
    • _2
  • 20140623
    • VALUE_3
    • VALUE_4

为了检测添加新日期的时间,我设置了一个on(' child_added')监听器,然后另一个(' child_added')监听器来检测其中的新值该日期因为on(' child_added')仅针对直接孩子触发。

为了避免使用双频带并加快加载速度,我想知道在哪个时刻传输该快照的所有数据:当我定义新子节目或我使用时。 val()函数?

1 个答案:

答案 0 :(得分:3)

使用on()或once()建立侦听器时会下载数据,并在本地缓存并同步,直到所有侦听器都断开连接。

通常不需要为嵌套子项建立child_added侦听器,因为它们已经存在于作为父级的一部分下载的数据中:

var ref = new Firebase(URL);
ref.on('child_added', function(snap) {
   console.log('parent rec', snap.name());
   snap.forEach(function(childSnap) {
      console.log('child rec', childSnap.name());
   });
});

但是,嵌套child_added事件也没有坏处;这一切都由Firebase内部优化,这些值将立即返回并从本地缓存的数据中返回:

var ref = new Firebase(URL);
ref.on('child_added', function(snap) {
   console.log('parent rec', snap.name());
   snap.ref().on('child_added', function(snap) {
      console.log('child rec', snap.nam());
   });
});

这里唯一需要注意的是,如果您希望稍后在这些事件侦听器上调用off(),则必须先断开连接,然后才能切断服务器连接并清除所有缓存数据。