这是我想要达到的目标。
我有用户最喜欢的俱乐部添加(如利物浦,巴萨等)。最喜欢的俱乐部的数量可以从1-5(最多5)。
当我需要显示fav俱乐部的新闻时,我需要从消防局那里得到所有的消息,其中添加了俱乐部名称作为文档的一个属性,如这样.
news: sddf938slsjsf(ID): title: 'news title', club: 'Liverpool'如果我知道有多少俱乐部是固定的,我可以根据每个fav_clubs (‘.where’,‘=’,‘=’,‘利物浦’)建立五个可观测的流,并使用CombineLatest操作符。
但在我的例子中,最喜欢的俱乐部的数量可能会有所不同,这些俱乐部是从用户集合-> Tagged_clubs获取的。
我正在努力寻找实现这一目标的方法。
发布于 2018-04-10 12:33:11
这是您所需的最低型号(我不会限制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允许您一次触发多个请求,并且只有在发出所有请求时才会执行订阅。
我就是这么做的。
https://stackoverflow.com/questions/49753601
复制相似问题