我正在尝试从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>[]
所以我可以称之为决心。
使用Promise.resolve()
将你的常数/变量employees
提升为Promise
。
在reduce()
之前使用subscribe()
将你的employees
整理成一系列的Employee
。
如果每个employee
作为Promise
返回,那么在flatMap()
'ing之前使用Rx.Observable.from()
与reduce()
解开该承诺。