我正在尝试从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。
答案 0 :(得分:0)
使用Promise.resolve()
将常量/变量employees
提升为Promise
。
在reduce()
之前使用subscribe()
将您的employees
整理成Employee
的数组。
如果每个employee
作为Promise
返回,则在flatMap()
之前使用带有Rx.Observable.from()
的{{1}}和reduce()
来取消承诺。