【问题标题】:Firestore update specific element in array [duplicate]Firestore更新数组中的特定元素[重复]
【发布时间】:2018-11-15 12:28:10
【问题描述】:

我正在使用带有 Angular 的 Google Firestore,我正在尝试更新数组中的特定元素。

我尝试了很多东西,但都没有成功。

如何访问公司数组中的特定公司索引?

谢谢:)

【问题讨论】:

  • "寻求调试帮助的问题(“为什么这段代码不起作用?”)必须包括所需的行为、特定问题或错误以及在问题本身中重现它所需的最短代码。没有明确的问题陈述对其他读者没有用处。见:How to create a Minimal, Complete, and Verifiable example."

标签: angular firebase google-cloud-firestore


【解决方案1】:

如何访问公司数组中的特定公司索引?

您无法根据相应的索引获取、更新或删除 Firestore 数组中的元素。试着想想如果一个用户想要编辑索引 0 处的值,其他用户想要删除索引 0 处的值,同时另一个用户想要在索引 1 处添加另一个值,你最终会发生什么有非常不同的结果,为什么不呢,ArrayIndexOutOfBoundsException。所以带有数组的 Firestore 操作有点不同。因此,您不能在特定索引处执行插入、更新或删除等操作。因此,只有在不关心存储元素的确切顺序时才使用数组。

Firestore 几周前添加了一些功能来添加或删除特定元素,但前提是不关心它们的确切位置。见here官方文档。

在您的情况下,您没有简单的字符串数组,而是有一个对象数组,这意味着为了进行一些更改,您应该获取整个对象,遍历属性,进行必要的更改并将其写回数据库。

【讨论】:

  • 好的。其实我不在乎确切的位置。我只想编辑一个元素并将其写回数据库中的数组。有什么想法吗?
  • 如果您不关心职位,正如您最初提出的那样,那么您应该根据答案和有关adding data 的官方文档中的信息进行自己的尝试并提出另一个问题如果出现其他问题。
  • 我的朋友编辑了我的问题。现在我设法通过从数组中删除特定对象并在之后插入更新的对象来做到这一点。还有其他方法吗?
  • 我回滚了你的问题。不要编辑您的实际问题来添加另一个问题。让我们一次只回答一个问题。如果您在解释完此问题后还有其他问题,请使用自己的 MCVE 针对该问题发布一个新问题。
  • 所以为了遵守这个社区的规则,请发布另一个新问题,以便我和其他用户可以帮助你。
猜你喜欢
  • 2016-11-14
  • 1970-01-01
  • 1970-01-01
  • 2012-03-04
  • 1970-01-01
  • 2016-05-26
  • 2019-02-01
  • 1970-01-01
  • 2012-04-16
相关资源
最近更新 更多