我试图了解Firebase何时将数据实际加载到客户端,而不是进行“延迟加载”(仅在需要时才下载数据)。原因是我将图像(base64)保存在Firebase中(请不要问为什么,因为它只有几百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的图像,我绝对不希望一次全部加载。

最佳答案

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

众所周知,所有数据都可以一次检索(无论是将.on称为“值”还是将on称为“ child_added”),因此最好使用orderByFirst / Last或firebase util来对结果进行分页

当实例化firebaseObject /数组时,角度火的作用是从实例的构造函数中调用'value'/'child_added',因此,是的,数据几乎立即被检索到(但是推迟,因此$ loaded()功能)。

例如,查看Object manager的源代码和$ firebaseObject的构造函数,这很清楚

09-16 14:47