Firebase child()与Angularfire $ firebaseObject

时间:2015-08-31 07:40:19

标签: javascript angularjs firebase angularfire

我正在尝试了解当Firebase实际将数据加载到客户端与执行"延迟加载" (仅在需要时下载数据)。原因是我在Firebase中保存图像(base64)(请不要问为什么它只有几百MB)。所以有两种选择:

  // With typical Firebase
  var imagesRef = Ref.child('images');

  // With Angularfire
  var imagesObj = $firebaseObject(Ref.child('images'));

Ref只是对我的Firebase网址的引用。

我知道使用Angularfire,$loaded()让我觉得Angularfire实际上会加载AT ONCE的所有数据,并在你立即调用$firebaseObject()时使其可用。 这是正确的吗?

至于使用child(),根据文档,我没有看到任何要捕获的load()事件。也许我错过了它。 但它是否将所有数据从服务器加载到客户端?

如果我喜欢500MB的图像,我绝对不希望这种负载一次性发生。

1 个答案:

答案 0 :(得分:1)

firebase在ref

上调用.on时检索数据

众所周知,所有数据都是一个整体检索的(你称之为.on'value'或.on'child_added'),所以你最好使用orderByFirst / Last或使用{{3}对结果进行分页。 }

当您实例化firebaseObject /数组时,在实例的构造函数内调用'value'/'child_added'时会发生什么角火,所以是的,数据几乎立即被检索(但是因此推迟了$ loaded()函数)。

查看firebase util的源代码和$ firebaseObject的构造函数,例如,它非常清楚