【发布时间】:2019-10-09 20:48:32
【问题描述】:
我正在 Firebase Firestore 上运行多个查询。他们都(可以)返回一个 Observable。我想将所有 Observable 组合成一个 Observable。
我尝试过不同的 RxJS 运算符,例如; combineLatest、forkJoin、concat、zip、merge 和 mergeMap。但我一直未能达到预期的效果。
getPrivateBooksFromAuthors(authors): Observable<Book[]> {
let bookRefs: Observable<Book[]>[] = [];
authors.map(key => {
bookRefs.push(this.afs.collection<Book>('books', ref =>
ref.where('public', '==', false)
.where('authors', 'array-contains', key)
).valueChanges())
});
return bookRefs[0]
}
在上面的代码中,我从作者 [0] 那里获得了所有私人书籍。当我返回 concat(...bookRefs) 或 concat(bookRefs[0], bookRefs[1]) 时,我仍然只能从作者 [0] 那里获得书籍。我希望得到所有作者提供的所有书籍。
【问题讨论】:
标签: angular typescript rxjs google-cloud-firestore