【问题标题】:In Firebase, do I really have to download an entire node in order store something?在 Firebase 中,我真的必须下载整个节点才能存储一些东西吗?
【发布时间】:2017-02-11 16:57:51
【问题描述】:

我将 Firebase 与 Angular2 包 AngularFire2 一起使用,并且正在尝试学习如何创建新项目。

根据文档:

使用 push() 方法在列表中添加新项目。

const items = af.database.list('/items');
items.push({ name: newName });

在我的例子中,“items”将是一个巨大的数组。我真的需要先获取它然后再推送吗?我不能不先下载就直接推送吗?

【问题讨论】:

    标签: firebase firebase-realtime-database angularfire2


    【解决方案1】:

    要将新子项添加到某个位置,您需要创建对该位置的引用。创建对某个位置的引用不会下载该位置的所有项目。

    使用适用于 Firebase 数据库的 JavaScript SDK,这需要:

    const items = firebase.database().ref('/items');
    items.push({ name: newName });
    

    另一方面:创建 AngularFire2 可观察对象下载该位置的项目。因此,如果您想在不下载现有数据的情况下添加项目,请使用适用于 Firebase 数据库的 JavaScript SDK。

    【讨论】:

    • 嗯。在实际下载项目之前,我不需要订阅 observable 吗?
    • 可能是这样。我不是 Angular2/AngularFire2 专家。但是您可以检查浏览器的网络选项卡以查看是否/何时下载数据。但可以肯定的是:我分享的常规 JavaScript SDK sn-p 将添加一个孩子而不下载项目。而且由于 AngularFire 构建在同一个 SDK 之上,它们可以完美地互操作:所以新的孩子将出现在您可能在同一页面/应用程序的其他地方拥有的任何 observables 中。
    • 在调用subscribe 之前,AngularFire2 列表和对象 observables 不会下载任何内容。所以这两个sn-ps本质上没有区别。
    • 很高兴听到@cartant。请记住:您始终可以在浏览器的“网络”选项卡中准确检查 Firebase 客户端发送/接收的内容。见stackoverflow.com/a/42181519/209103
    • 我正在使用 firebase.database().ref 但更新时节点仍在刷新。
    猜你喜欢
    • 2014-09-11
    • 2011-09-07
    • 2019-01-04
    • 1970-01-01
    • 2020-02-15
    • 1970-01-01
    • 2018-01-31
    • 2019-08-26
    • 1970-01-01
    相关资源
    最近更新 更多