【问题标题】:How to create JSON tree and nested nodes in Firebase using AngularFire2如何使用 AngularFire2 在 Firebase 中创建 JSON 树和嵌套节点
【发布时间】:2018-12-12 16:06:52
【问题描述】:

AngularFire2 v5 没有适当的文档,所以我不知道我应该从哪里学习,但这里只适用于 Firestore。我不使用 Firestore,我使用 Firebase 实时数据库。 https://github.com/angular/angularfire2/tree/master/docs

但是,我对它很陌生,我正在研究如何将数据存储在集合中,看起来像这样:

nepal-project-cffb1: 
   users: 
      userid: 
        email: "lajmis@mail.com"
        score: 1

我的函数现在看起来像这样:

this._db.list("users/" + "id").set({
      email: this.user,
      score: this.score
    })

但它不起作用,我收到Expected 2 arguments, but got 1. 错误。有一堆语法,比如.ref.list,我不知道用哪个。

【问题讨论】:

  • 我希望例如如何使用 valueChanges() 存储而不是检索。我正在寻求帮助,如何按照我在 OP 中提供的数据结构来做到这一点。该文档对初学者不友好,因此我在这里寻求帮助。

标签: json angular firebase angularfire2


【解决方案1】:

AngularFire 指南dedicated to RTDB 有一整节,所以我对没有真正文档的说法感到困惑。通常,您会使用valueChanges() 创建一个列表观察者,如here 所述,用于读取,并且 set() 被here 覆盖。

因此,正如该文档所示,您需要传递要修改的记录的键,以及调用时要更改的数据。

this._db.list("users").set("id", {...});

但如果你不监控集合,你也可以直接使用db.object

this._db.object("users/id").set({...});

AngularFire 可能不会立即直观的一个方面是,它主要是一种适配器模式,旨在消除在 Angular 模型和 Firebase 服务器之间传送数据的一些样板。

如果您不同步数据(下载本地副本),那么这里没有理由使用 AngularFire。您可以直接调用 Firebase SDK 并避免订阅远程端点的开销:

firebase.database().ref("users/id").set({...});

【讨论】:

  • 感谢您的澄清,起初我很困惑我应该使用 Firebase SDK 还是 AngularFire2,有什么区别,但在我的情况下,我发现 SDK 工作得很好。
猜你喜欢
  • 1970-01-01
  • 2018-05-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-07-21
  • 1970-01-01
  • 2016-08-16
  • 2020-05-27
相关资源
最近更新 更多