使用 JavaScript 编辑 Firebase 中地图数组中的单个字段。 (React-Native)

问题描述 投票:0回答:1

在 firebase 中我有这样的数据结构:

是一个地图数组,里面有一些值。

(使用 JavaScript)例如,如果我只想更新位置 1 处数组的字段“field1”而不更新整个“ArrayTest”,我该怎么做?

我尝试了这样的解决方案:

 const exampleFunction = async () => {
    const usersDocRef = firestore().collection('users').doc(docID);

    usersDocRef.update({
      'ArrayTest.1.field1': "newFoo",
    })
  }

但是发生的情况是,它从“ArrayTest”中删除了所有其他内容,留下了这样的结构:

ArrayTest
    - [1]
      - field1: "NewFoo"

显然我不想编辑或删除结构的其余部分,只是一个字段,我该怎么做?

javascript firebase react-native react-native-firebase
1个回答
0
投票

不幸的是,您无法通过 firestore 中的索引直接访问数组。尽管您可以通过实现读取文档、获取数组、更新特定元素/字段,然后更新文档中的数组的解决方案来解决此问题。

这是一个例子:

const doc = await docRef.get();
const array = doc.data().array; // change `array` for the field name

// update array field
array[1].field1 = 'bar';

await docRef.update({ array });

注意,此示例假设

docRef
已定义。

这是一个非常基本的示例,您需要根据您的要求进行更改,但它显示了基本原理。

请注意,这也不是最佳解决方案,因为现在您只是为了更新字段而需要进行读取和写入操作,因此这在时间和金钱方面都更加昂贵。我不可能说是否有办法解决您的问题,首先避免更新数组,所以我的第一个方法是首先查看是否有其他可以实现的解决方案,如果没有,请使用类似于上面示例的方法。希望这有帮助!

© www.soinside.com 2019 - 2024. All rights reserved.