Обещание <Employee>[] нельзя назначить параметру типа Employee [] - PullRequest
0 голосов
/ 03 сентября 2018

Я пытаюсь загрузить свою коллекцию сотрудников из базы данных 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>[], чтобы я мог позвонить решить.

1 Ответ

0 голосов
/ 03 сентября 2018

Используйте Promise.resolve(), чтобы поднять вашу константу / переменную employees в Promise.

Используйте reduce() перед subscribe(), чтобы объединить ваши employees в массив Employee.

Если каждый employee возвращается как Promise, разверните это обещание, используя flatMap() с Rx.Observable.from() перед reduce() 'ing.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...