我想遍历帖子的GET请求并从收藏夹ID数组中获取收藏夹帖子
我已经尝试过以下代码,但是我不知道这是最好的方法
data.service.ts
getPosts(): Observable<Post[]> {
return this.http.get<Post[]>(this.postsUrl);
}
我想通过他们喜欢的帖子从喜欢的帖子数组中获取所有帖子 组件
getFavorites(): void {
this.serverService.getPosts().subscribe(posts => {
this.favoriteIds.forEach(element => {
let data = posts.filter(post => post.id === element);
this.posts = data;
console.log(this.posts);
});
});
}
答案 0 :(得分:2)
您将要在此处使用map
运算符在订阅之前映射您的帖子:
this.serverService.getPosts().pipe(
map(posts => posts.filter(post => this.favoriteIds.includes(post.id)))
).subscribe(data => this.posts = data)
您要做的另一件事是摆脱getPosts()方法,仅将本地Observable分配与shareReplay(1)运算符一起使用:
getPosts$ = this.http.get<Post[]>(this.postsUrl).pipe(
shareReplay(1)
)
这将防止您每次尝试获取收藏夹时都向服务器发出新呼叫。