У меня есть приложение курсов в Angular. Где есть курсы. Одной из функций является сохранение пользователями собственных курсов (выбор общих курсов).
Все курсы сохраняются в собственной коллекции в Firestore.
Курсы, выбранные пользователями, имеют ключи курса выбранных курсов под своим идентификатором.
Я хочу получить идентификаторы выбранных пользователем курсов. Используйте эти идентификаторы курсов, чтобы извлечь выбранные курсы из коллекции курсов и отобразить эти выбранные курсы в виде массива в угловом формате.
Я делал это раньше в базе данных реального времени, но у меня возникли трудности с этим с помощью Firestore.
Это соответствующие функции из сервиса, который имеет значение AngularFirestore.
readdocsdifferentpaths(userpath: string, coursepath: string): Observable<any[]> {
return this.findItemsForKeyList(coursepath, this.readcollection$(userpath))
}
findItemsForKeyList(path: string, ob: Observable<any[]>): Observable<any> {
return ob.pipe(
map(observ => observ.map(key => this.readdoc$(path, key.courseidentification))),
flatMap(result => observable.combineLatest(result))
);
}
readdoc$(path: string, id: string): Observable<any> {
return this.afs.doc<any>(`${path}/${id}`).valueChanges()
}
readcollection$(path: string): Observable<any[]> {
return this.afs.collection<any[]>(path).valueChanges()
}
Решено в операторе импорта
import { Observable, combineLatest } from 'rxjs';
Не
import { combineLatest } from 'rxjs/operators';