Объединение нескольких вызовов Firebase с AngularFire - PullRequest
0 голосов
/ 10 июля 2019

У меня есть приложение курсов в 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';
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...