诺言 []不能分配给Employee []类型的参数

问题描述 投票:2回答:1

我正在尝试从Firestore数据库中加载我的员工集合,并且我想要加载一个'Workday'的每个员工,这是'Employees'子集的文档。这是我的代码:

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<Employee>[]' is not assignable to parameter of type 'Employee[]。我不知道怎么能得到Employee[]Promise<Employee>[]所以我可以称之为决心。

javascript typescript firebase async-await google-cloud-firestore
1个回答
0
投票

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

reduce()之前使用subscribe()将你的employees整理成一系列的Employee

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

© www.soinside.com 2019 - 2024. All rights reserved.