我有一个名为"tasks"的集合,每个文档都有一个名为"resolver"的对象数组,其中包含 14 个元素,因此结构如下所示:
tasks
--resolver
--1: false
--2: false
.
.
.
--14: false
如何将其中的任何项目更改为 true?
我试过这个:
updateElement(task: Task) {
var ref = this.afs.doc(`tasks/${task.id}`).collection('resolver').doc('7'); <--Element 7 (?
return ref.update(true) <-- Set to true (?
}
您不能像在 RTDB 中那样访问 Firestore 文档中的字段。 您需要获取文档,编辑resolver
对象并将其写回原始文档。 如果要确保没有其他代码同时修改,请将其包装在事务中。
下面是一个使用 Node SDK 的示例。您可以修改它以适合您的环境。
updateElement(task) {
let taskRef = firestore.doc(`tasks/${task.id}`);
return firestore.runTransaction(taskTransaction => {
return taskTransaction.get(taskRef)
.then(taskDoc => {
let resolver = taskDoc.data().resolver;
resolver.7 = true;
taskTransaction.update(taskRef, resolver)
})
})
.then(result => {
console.log('Transaction success!');
})
.catch(err => {
console.log('Transaction failure:', err);
});
}