我的数据按日期和增量ID排序,如下所示:
为了检测添加新日期的时间,我设置了一个on(' child_added')监听器,然后另一个(' child_added')监听器来检测其中的新值该日期因为on(' child_added')仅针对直接孩子触发。
为了避免使用双频带并加快加载速度,我想知道在哪个时刻传输该快照的所有数据:当我定义新子节目或我使用时。 val()函数?
答案 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(),则必须先断开连接,然后才能切断服务器连接并清除所有缓存数据。