如何在云火存储中更改对象内的值



我有一个名为"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);
  });
}

相关内容

  • 没有找到相关文章

最新更新