【发布时间】:2015-08-31 07:40:19
【问题描述】:
我试图了解 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 实际上一次加载所有数据,并在您立即调用 $firebaseObject() 时使其可用。 正确吗?
至于使用child(),根据文档,我没有看到任何load() 事件要捕获。也许我错过了。 但它会将所有数据从服务器加载到客户端吗?
如果我有 500MB 的图像,我绝对不希望这种一次性加载的情况发生。
【问题讨论】:
-
Ref.child() 只是创建对子位置的引用。不加载任何东西。我怀疑角度包装器也是如此。
-
我很确定
$firebaseObject()会立即加载数据(请参阅github.com/firebase/angularfire/blob/master/src/…)。但是您可以通过打开 Chrome 控制台的“网络”选项卡并检查 Web 套接字流量来轻松检查这一点。 -
从路径名为
images的情况来看,很可能是一个集合。因此,您应该使用$firebaseArray()而不是$firebaseObject()。
标签: javascript angularjs firebase angularfire