不能将Promise <employee> []分配给Employee []类型的参数

时间:2018-09-03 20:14:40

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

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

Profile

但是我收到语法错误DailyReports。我不知道如何获得{'agent_code': 'ABC123', 'premium': Decimal('479872.55'), user.profile.first_name, user.profile.last_name, profile.user_id, profile.role} {'agent_code': 'DEF456', 'premium': Decimal('448118.20'), user.profile.first_name, user.profile.last_name, profile.user_id, profile.role} {'agent_code': 'GHI789', 'premium': Decimal('356322.35'), user.profile.first_name, user.profile.last_name, profile.user_id, profile.role} 中的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[] } ); }); } ,所以我可以打电话给resolve。

1 个答案:

答案 0 :(得分:0)

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

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

如果每个employee作为Promise返回,则在flatMap()之前使用带有Rx.Observable.from()的{​​{1}}和reduce()来取消承诺。