我试图了解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的构造函数,这很清楚