【问题标题】:How can I update an object inside of an array in firestore? [duplicate]如何更新firestore中数组内的对象? [复制]
【发布时间】: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),
      })

【问题讨论】:

    标签: javascript reactjs google-cloud-firestore


    【解决方案1】:

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

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

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

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

    另见:

    【讨论】:

    • 在我的应用程序中处理“预订”的更友好方式是什么?我仍然需要将它们按日期分开。我觉得我在使用数组时会遇到麻烦......
    • 我希望它们在一个子集合中,这是解决“三步问题”的一种方法,也允许对它们进行查询。但这当然会带来更高的成本,因为您需要读取/写入更多文档。
    猜你喜欢
    • 2018-09-01
    • 1970-01-01
    • 2021-02-02
    • 2020-12-27
    • 2022-11-18
    • 2021-03-26
    • 2019-05-25
    相关资源
    最近更新 更多