作者热门文章
- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我正在尝试从 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<Employee>[]' is not assignable to parameter of type 'Employee[]
.我不知道如何获得 Employee[]
的 Promise<Employee>[]
所以我可以调用 resolve。
最佳答案
使用 Promise.resolve()
将您的常量/变量 employees
提升为 Promise
。
在 subscribe()
之前使用 reduce()
将您的 employees
整理成一个 Employee
数组。
如果每个 employee
都作为 Promise
返回,则使用带有 Rx.Observable 的
在 flatMap()
解包该 promise。 from()reduce()
之前。
关于javascript - Promise<Employee>[] 不可分配给 Employee[] 类型的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52155760/
我是一名优秀的程序员,十分优秀!