【问题标题】:how to set data to firebase map object如何将数据设置为 Firebase 地图对象
【发布时间】:2019-10-12 21:16:02
【问题描述】:

我有一个火力地图对象,我需要在里面插入数组

我正在尝试使用更新功能,但它不起作用

dialogRef.afterClosed().subscribe(result => {
  console.log(result);

  const arrayname = result.name;
  const fireupdate = this.af.list('/users/' + this.Uid + '/items').update(arrayname, result);
}); 

这是结果数组的样子

{name: "item", price: 25, desc: "a simple item"}

我在火力基地中没有得到任何东西

【问题讨论】:

  • 只是一个数组还是对象数组?
  • 对象数组@Swoox
  • {name: "item", price: 25, desc: "a simple item"}这个数组

标签: arrays angular typescript firebase


【解决方案1】:

所以最简单的做法是将数组添加到文档中,如另一个答案所示。

this.db.collection("users").doc(this.Uid).update({items: [{name: "item", price: 25, desc: "a simple item"}, {name: "item2", price: 20, desc: "a simple item2"}]}) 

您必须注意的是,firestore 还没有一个很好的方法来查询包含对象的数组:

query an array

Firestore 想要你做的基本上是:

this.db.collection("users").doc(this.Uid).collection('items').add({name: "item", price: 25, desc: "a simple item"})

【讨论】:

  • 如果我添加这个,我以后可以添加另一个数组吗? @Swoox
  • 问题是我添加这种数组不只是一次
  • 是的,我自己也在寻找这样的东西
  • 有可能吗?
  • 似乎他们不只支持像 ['north', 'south'] 这样的数组。我以想要的方式编辑了我的答案。
【解决方案2】:

如果我没记错的话,通过this.af.list('/users/' + this.Uid + '/items').update(),您实际上是在尝试写信给Realtime Database,请参阅https://github.com/angular/angularfire2/blob/master/docs/rtdb/lists.md#updating-items-in-the-list-using-update

但是您在问题中显示的数据库是 Firestore,这是 Firebase 提供的另一个数据库服务。

您应该使用专用于 Firestore 的 angularfire2 库部分,请参阅 https://github.com/angular/angularfire2/blob/master/docs/firestore/documents.md#using-angularfirestoredocument

【讨论】:

  • 我把它改成了 item[result.name]=result; this.db.collection("users").doc(this.Uid).update({items:item}) 但是每次都会覆盖数据你知道为什么吗?
  • 每次都会覆盖。如果您只想更新价格,您可以使用{ price: 1 } 而不是所有其他属性。
  • 不,我只是想添加更多数组...我想使用这些字段向项目添加更多数组@Swoox
猜你喜欢
  • 2019-08-12
  • 2018-02-10
  • 1970-01-01
  • 2015-09-05
  • 1970-01-01
  • 2021-11-05
  • 2018-04-17
  • 2016-03-06
  • 2020-04-09
相关资源
最近更新 更多