我有一个名为'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 (?
}
答案 0 :(得分:0)
您无法访问Firestore文档中的字段,就像在RTDB中一样。您需要获取文档,编辑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);
});
}