这是我想要实现的目标。
我有添加了最喜欢的俱乐部的用户(如利物浦,巴萨等)。最喜欢的俱乐部数量可以从1到5(最多5)不等。
当我需要显示最喜欢的俱乐部新闻时,我需要从firestore获取所有新闻,其中添加了俱乐部名称作为此类文档的属性......
news: sddf938slsjsf(ID): title: 'news title', club: 'Liverpool'
如果我知道有多少个固定数量的俱乐部,我可以 - 根据每个fav_clubs(.where('club','==','Liverpool')的五个可观察流和使用CombineLatest运算符
但在我的情况下,最喜欢的俱乐部的数量可能会有所不同,这是从用户收集中获取的 - > Tagged_clubs。
我正在努力寻找实现这一目标的方法。
答案 0 :(得分:1)
这是您所需的最低模型(我不会限制为5个俱乐部更快):
User {
ID: string;
favorites: string[];
}
Club {
ID: string;
}
New {
club: string;
title: string;
content: string;
}
现在,假设您希望获得用户喜爱的俱乐部的所有新闻。
getFavNews(user: User) {
const calls = [];
for (let fav of user.favorites) {
calls.push(this.getNewForClub(fav));
}
return forkJoin(calls);
}
getNewForClub(club_ID: string) {
// Firebase request to get the news about the given club
}
使用此代码,您需要订阅该方法,该方法将为俱乐部返回一系列新闻:forkJoin
允许您一次触发多个请求,并且您的订阅仅在所有请求时执行请求已经提出。
我就是这样做的。