Angular / Firestore-等待Firestore文档查询

问题描述

我在用于创建新文档的服务中具有一个功能。此新文档的值之一必须来自另一个文档中存储的值。

在更新新文档之前,如何等待文档查询(getDoc)返回的值?

我想象的步骤(如果我错了,请纠正我)是

  1. 调用getDoc函数并返回一个值,例如“生日”
  2. 返回该值后,请调用newDocument函数,以便将birthday值用于new_value

添加新文档的功能:

newDocument(g){
  const newID = this.afs.createId();
  this.afs.doc<Interface>(`col/${id}/col/${newID}`).set({
    new_value: // needs to come from other query
  });
}

查询文档的功能,我需要从中获取数据:

  getDoc(ID: string) {
    return this.afs.doc<Interface>(`col/${ID}`).valueChanges().pipe(shareReplay());
  }

解决方法

我建议您阅读官方的angularfire documents doc,在这里您可以看到有关如何查询和操作文档的基本示例。

在您的情况下,应将文档转换为Promise或在get调用中,以等待文档上的subscribe()调用。出于示例目的,我将所有内容都放在同一函数上。

  async newDocument(){
    const ID = 'some_id';
    const docData = await this.afs.doc(`col/${ID}`).get().toPromise();  // Await the doc data
    const newID = this.afs.createId();
    this.afs.doc(`col/${id}/col/${newID}`).set({
      new_value: docData
    });
  }

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...