Я не понимаю, почему я получаю 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();
}
}