Firebase child() 与 Angularfire $firebaseObject

Firebase child() vs. Angularfire $firebaseObject

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

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

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

Ref 只是对我的 Firebase URL.

的引用

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

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

如果我有大约 500MB 的图像,我绝对不希望这种一次加载全部的情况发生。

当您在 ref 上调用 .on 时,firebase 检索数据

众所周知,所有数据都是在一块检索的(无论您调用 .on 'value' 还是 .on 'child_added'),因此您最好使用 orderByFirst / Last 对结果进行分页,或者使用 firebase util

当您实例化一个 firebaseObject/数组时,angular fire 会从实例的构造函数中调用 'value' / 'child_added',所以是的,数据被检索几乎立即(但延迟因此 $loaded() 函数)。

看看Object manager的源码,比如$firebaseObject的构造函数,很清楚