Angular Firebase Получение Zoneaware с обещаниями - PullRequest
0 голосов
/ 17 апреля 2020

Я не понимаю, почему я получаю Zoneaware с этим кодом. Кто-нибудь может мне помочь?

Вот рациональный подход: Шаг 1 получить данные в виде массива, а затем отобразить их и вызвать шаг 2. Шаг 2 получить идентификатор executorID из шага 1 и вернуть объект. Шаг 3 получить данные о пользователях и вернуть объект. Пожалуйста, не обращайте внимания на ДРУГОЕ, это для чего-то другого.

Итак, идея в том, что в конце я получу законченный объект.

// Step 1 get the data as an array and then map it and call step 2.
getPanic(checkID: string) {
    return this.db.firestore.collection(`${this.PATH}`).where('checkId', '==', checkID).get()
        .then(data => {
            return data.docs.map(async d => {
                const panicObj = {id: d.id, ...d.data() } as any;
                panicObj.actions = await this.getActions(panicObj.id);
                return panicObj;
            });
        })
        .catch((err) => console.log(err));
}

// Step 2 get the ID executorID from the step1 and return an object,
getActions(panicID: string) {
    return this.db.firestore.collection(`${this.PATH}${panicID}/actions`).get()
            .then(data => {
                return data.docs.map(async d => {
                    const actionObj = d.data();
                    actionObj.executorData = await this.userService.getUser(actionObj.executor, true);
                    return actionObj;
                });
            })
            .catch((err) => console.log(err));
}

// Step 3 get the users data and return an object. Please ignore the ELSE, that's for something else.
getUser(uid, asPromise?: boolean) {
    if (asPromise) {
        return this.db.firestore.doc(`users/${uid}`).get()
                .then(uData => {
                    return uData.data();
                })
                .catch((err) => {
                    console.log(err);
                    return err;
                });
    } else {
        return this.db.doc<Interviewers>(`users/${uid}`).valueChanges();
    }
}

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