#javascript #angular #firebase #google-cloud-firestore #angularfire2
#javascript #угловой #firebase #google-облако-firestore #angularfire2
Вопрос:
Я хочу выполнить некоторую операцию firebase внутри цикла в angular. Когда я отправляю HTTP-запрос в firebase, он возвращает массив наблюдаемых, поэтому с помощью forkjoin я преобразую этот массив наблюдаемых в отдельные наблюдаемые. Теперь проблема в том, что когда я подписываюсь на эти новые наблюдаемые, я ничего не получаю
get_student_email() {
this.get_project_service
.get_project_by_doc_id(this.batchID, this.projectID)
.subscribe((res) => {
this.response = res;
this.email = this.response.student;
let data = this.email.map((email) =>
this.get_student_service.get_student_by_email_id(email)
);
let info = forkJoin([data]);
console.log('info:', info);
info.subscribe((res) => {
console.log(res);
console.log('Execute');
});
});
}
Output:info: Observable {_isScalar: false, _subscribe: ƒ}
Я тоже пробую это. На этот раз он снова возвращает наблюдаемые
let data = this.email.map((email) =>
this.get_student_service.get_student_by_email_id(email)
);
let info = forkJoin([data]);
console.log('info:', info);
info.subscribe((res) => {
console.log(res);
console.log('Execute');
});
});
Output:-
info: Observable {_isScalar: false, _subscribe: ƒ}
[Observable]
Execute
Вот мой сервис
get_student_by_email_id(email) {
return this.fire_store
.collection('User', (ref) => ref.where('email', '==', email))
.valueChanges();
}
Я не знаю, в чем основная причина этой проблемы. Я хочу, чтобы после завершения цикла его выполнение возвращало один объект массива, содержащий информацию обо всех пользователях, которые принадлежат этому массиву email (this.email)
Комментарии:
1. Кажется, у вас есть наблюдаемые внутри наблюдаемых. Пожалуйста, покажите, что именно
this.email
и чтоthis.get_student_service.get_student_by_email_id()
возвращает функция.2. Проверьте, теперь эта функция возвращает информацию о пользователе
Ответ №1:
Проблема в коде forkJoin([data])
.
Ваш data
it уже представляет собой массив наблюдаемых, поэтому вы просто передаете его forkJoin
следующим образом: forkJoin(data)
.
Комментарии:
1. Нет, в то время мой блок подписчиков ничего не печатает