创建快照是否下载数据?

时间:2015-07-09 00:44:32

标签: javascript firebase firebase-realtime-database

在您调用快照或使用它时,它是否下载数据?例如,下面的代码是否只是从" pushingItem3"下载数据?还是会下载所有数据?

示例数据:

List-1: {
    pushedItem1: {data},
    pushedItem2: {data},
    pushedItem3: {data}
},
List-2: {
    pushedItem3: {data},
    pushedItem4: {data},
    pushedItem5: {data}
}

下面的代码搜索" pressedItem3"。

的每个列表
ref.on("child_added", function(snap){ 
  var listID = snap.key();
  ref.child(listID).child("pushedItem3").on("value", function(shot){
    console.log(shot.val());
  }
}

这可能看起来不是很多,但对我而言,用户下载整个firebase或只是相关数据之间的区别。

1 个答案:

答案 0 :(得分:2)

在调用回调时下载数据。所以在你的代码中:

// nothing is downloaded yet
ref.on("child_added", function(snap){ 
  // the key and value of snap are downloaded
  var listID = snap.key();
  ref.child(listID).child("pushedItem3").on("value", function(shot){
    // the key and value of shot are downloaded
    console.log(shot.val());
  }
}

这是Firebase documentation recommends against arbitrarily nesting data

的原因之一
  

当我们读取数据库中的数据节点时,我们也会检索它的所有子节点!

这是文档中的警告,但您应该真正阅读整个页面。

附注:您可以通过转到Chrome的“网络”标签并检查WebSockets流量,轻松监控Firebase检索的数据。