我在Angular中有一个课程应用程序。哪里有课程。功能之一是让用户保存自己的课程(选择整个课程)。 所有课程都保存在Firestore中自己的馆藏中。 用户选择的课程在其用户ID下具有所选课程的课程密钥。
我想检索用户选择的课程ID。使用这些课程ID可以从课程集合中检索所选课程,并将这些所选课程显示为有角度的数组。
我以前在Realtime数据库中已经做到这一点,但是我在Firestore中却很难做到。
这是afs为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';