gpt4 book ai didi

javascript - Promise[] 不可分配给 Employee[] 类型的参数

转载 作者:搜寻专家 更新时间:2023-10-30 21:57:33 25 4
gpt4 key购买 nike

我正在尝试从 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/

25 4 0