如何在Firestore中更改文档的数组字段的某个索引的值?

时间:2018-03-12 04:44:40

标签: firebase google-cloud-firestore angularfire

我有一个带有fire firestore的角度应用程序,其结构如下:

--nombre
--grupo
--nombre1
--nombre2
--nombre3
--numerocuenta1
--numerocuenta2
--numerocuenta3
--resuelto
  --0: false
  --1: false
  .
  .
  .
  --13: false

正如你所看到的,最后我有一个boolean(resuelto)数组,其中包含13个元素,我想在点击具有相同索引的元素时更改某个索引的值

¿有没有办法访问该数组的每个索引并更改其值?

我试过这个:

this.taskDoc = this.afs.doc(`tasks/${task`);
this.taskDoc.update(resuelto[0]); <-- 

而且:

this.taskDoc.update(resuelto.0); <--

2 个答案:

答案 0 :(得分:1)

Firestore不支持更新单个数组元素。如果你有一个数组并且想要改变它的一个值,你将必须读取整个数组,在本地更改值,然后再写回整个数组。

将数据建模为对象而不是数组可能更好。可以通过调出对象字段with the dot notation来单独更新对象属性。

答案 1 :(得分:0)

虽然无法按索引对数组中的某些元素执行操作,但是可以使用arrayUnion和arrayRemove按值添加或删除数组中的元素:

doc.update("someField" : FieldValue.arrayUnion("someValue"))
doc.update("someField" : FieldValue.arrayRemove("someValue"))

这使数组的行为更像是集合而不是数组,但它至少为您提供了一些选择。这里有更多文档:https://firebase.googleblog.com/2018/08/better-arrays-in-cloud-firestore.html