Angular join query for firebase database
| ngOnInit() { | |
| this.joined$ = this.af.collection<BlogPost>('blog-posts').valueChanges() | |
| .pipe( | |
| switchMap(blogPosts => { | |
| const authorIds = uniq(blogPosts.map(bp => bp.authorId)) | |
| return combineLatest( | |
| of(blogPosts), | |
| combineLatest( | |
| authorIds.map(authorId => | |
| this.af.collection<Author>('authors', ref => ref.where('id', '==', authorId)).valueChanges().pipe( | |
| map(authors => authors[0]) | |
| ) | |
| ) | |
| ) | |
| ) | |
| }), | |
| map(([blogPosts, authors]) => { | |
| return blogPosts.map(blogPost => { | |
| return { | |
| ...blogPost, | |
| author: authors.find(a => a.id === blogPost.authorId) | |
| } | |
| }) | |
| }) | |
| ) | |
| } | |
| } |