如何更新firestore中数组内的对象? [复制]

Posted

技术标签:

【中文标题】如何更新firestore中数组内的对象? [复制]【英文标题】:How can I update an object inside of an array in firestore? [duplicate] 【发布时间】:2020-10-06 13:37:40 【问题描述】:

我想更新 Firestore 中数组中对象的 completed 属性,但我不知道如何访问数组中的特定元素。图像将显示结构。

我已经走到了这一步,但不知道如何选择,例如数组中的第 1 项。我正在考虑使用它的 ID(它有一个 id 属性),但不知道如何到达那里。

const businessRef = db.collection('approvedBusinesses').doc(businessId)
      try 
        businessRef.update(
          [`bookings.$currentDate ????? `]: true // what to add after currentDate?
        )

顺便说一下,这就是数组的创建方式(以及其他对象的推送方式)

const bookingObj = 
      carro: 'PASSA_CARRO',
      completed: false,
      userId: userObject.uid,
    

businessRef.update(
        [`bookings.$currentDate`]: firebase.firestore.FieldValue.arrayUnion(bookingObj),
      )

【问题讨论】:

【参考方案1】:

Firestore 没有允许您通过索引更新数组中现有项目的操作。

要更新数组中的现有项,您需要:

    将整个文档读入您的应用程序。 在您的应用程序代码中修改数组中的项目。 将整个数组写回到文档中。

我很确定以前有人问过这个问题,所以让我看看是否有一个例子的答案。

另见:

How to remove an array element according to an especific key number? Simple task list ordering - how to save it to Firebase Firestore? How to update only a single value in an array How to update an "array of objects" with Firestore?

【讨论】:

在我的应用程序中处理“预订”的更友好方式是什么?我仍然需要将它们按日期分开。我觉得我在使用数组时会遇到麻烦...... 我希望它们在一个子集合中,这是解决“三步问题”的一种方法,也允许对它们进行查询。但这当然会带来更高的成本,因为您需要读取/写入更多文档。

以上是关于如何更新firestore中数组内的对象? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

Firestore删除一个数组内的索引

如何更新firestore中的数组[重复]

如何更新猫鼬模式中另一个数组内的数组内的对象?

Flutter Firestore:通过参数更新对象数组

如何使用 Firestore 函数更新地图中的数组?

如何从 Firestore 集合中获取所有文档并将它们返回到数组列表中? [复制]