【问题标题】:Promise<Employee>[] is not assignable to parameter of type Employee[]Promise<Employee>[] 不能分配给 Employee[] 类型的参数
【发布时间】:2019-02-08 20:46:24
【问题描述】:

我正在尝试从 Firestore 数据库加载我的员工集合,并且我想为每个员工加载一个“工作日”,它是“员工”子集合的文档。这是我的代码:

loadEmployees() {
    return new Promise<Employee[]>(resolve => {
        this.db.collection('Employees').snapshotChanges().pipe(
            map(changes => changes.map(async a => {
                const employee = a.payload.doc.data() as Employee;
                employee.id = a.payload.doc.id;
                employee.workday = await this.loadWorkday(employee);    // <-- returns a Promise<Workday>

                return employee;
            }))
        ).subscribe(
            employees => {
                resolve(employees); // Error: <--- Promise<Employee>[]' is not assignable to parameter of type 'Employee[]
            }
        );
    });
}

但我收到语法错误Promise&lt;Employee&gt;[]' is not assignable to parameter of type 'Employee[]。我不知道如何获得Promise&lt;Employee&gt;[]Employee[],以便调用resolve。

【问题讨论】:

    标签: javascript typescript firebase async-await google-cloud-firestore


    【解决方案1】:

    使用Promise.resolve() 将您的常量/变量employees 提升为Promise

    subscribe() 之前使用reduce() 将您的employees 整理到Employee 的数组中。

    如果每个employee 都作为Promise 返回,则在reduce()'ing 之前使用flatMap()Rx.Observable.from() 解开该承诺。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-08-29
      • 2022-01-20
      • 2015-10-24
      • 2020-11-20
      • 2019-03-04
      • 2022-11-30
      • 2021-08-05
      • 1970-01-01
      相关资源
      最近更新 更多