gpt4 book ai didi

typescript - 如何使用 arrayUnion 更新 map 中的数组?

转载 作者:行者123 更新时间:2023-12-04 01:54:58 25 4
gpt4 key购买 nike

在 Firestore 中,我有一个包含名为 myMap 的 map 的文档,其中包含一个名为 myArr 的数组字段。

是否可以使用 arrayUnion 来更新 myArr,方法是在事务中向其添加一个元素?

await admin.firestore().runTransaction(async (transaction: Transaction) => {
//

const docRef: DocumentReference = admin.firestore()
.doc(`collection/document`);

const doc: DocumentSnapshot = await transaction.get(docRef);

if (doc.exists)
await transaction.update(docRef,
{'myMap': {'myArr': FieldValue.arrayUnion('myNewValue')},}
);

});

我相信上面的代码应该添加 myArr,但它会替换整个数组。

我做错了什么?

最佳答案

FieldValue.arrayUnion()FieldValue.arrayRemove() 仅在更新对象顶层标识的字段本身是一个列表时才起作用。您现在通过为对象提供列表所做的事情确实是在替换整个列表。它不会识别该列表的现有内容。

您可以做的是调出嵌入列表的具体名称:

    await transaction.update(docRef,
{'myMap.myArr': FieldValue.arrayUnion('myNewValue')},}
);

请注意用于明确调用列表的点符号。

关于typescript - 如何使用 arrayUnion 更新 map 中的数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54190855/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com