Edu*_*chi 3 firebase typescript google-cloud-firestore
在 Firestore 中,我有一个包含名为 的地图的文档myMap,其中包含一个名为 的数组字段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')},}
);
});
Run Code Online (Sandbox Code Playgroud)
我相信上面的代码应该添加myArr,但它代替了整个数组。
我究竟做错了什么?
FieldValue.arrayUnion()并且FieldValue.arrayRemove()仅当在更新对象的顶层标识的字段本身是一个列表时才有效。您现在通过为对象提供列表所做的确实是在替换整个列表。它不会识别该列表的现有内容。
您可以做的是调出嵌入列表的特定名称:
await transaction.update(docRef,
{'myMap.myArr': FieldValue.arrayUnion('myNewValue')},}
);
Run Code Online (Sandbox Code Playgroud)
请注意用于专门调用列表的点符号。
| 归档时间: |
|
| 查看次数: |
960 次 |
| 最近记录: |