【发布时间】:2017-06-18 17:20:23
【问题描述】:
我正在尝试合并一个可观察的列表,但没有使用 zip 或其他地图的运气。
我想做的是获取给定艺术家 ID 的流派列表。我使用的是firebase,所以它是一个nosql 数据库。我有一个“genresPerArtist”列表,它是一个艺术家键列表,每个艺术家键都有一个流派键列表。 结构:
{
genresPerArtist: {
artist1: {
genre1: true,
genre2: true,
genre3: true
}
},
genres: {
genre1: {
name: 'Alternative'
},
genre2: {
name: 'Jazz'
}
}
}
这是我拥有的功能的开始:
getGenresByArtistId(artistId: string): Observable<any> {
return this.db.list(`/genresPerArtist/${artistId}`)
.flatMap((genres: IDictionary[]) => {
return genres.map(genre => this.db.list(`/genres/${genre.$key}`));
// return Observable.zip(obvs);
});
我不太确定如何处理我从genresPerArtist 获得的列表。我想要做的是获取每个genre.key(genre1,genre2,genre3),并使用每一个从'genres'中获取值。我以为我可以返回一个 .zip,然后对其进行映射,但我没有得到 zip 的响应。
【问题讨论】:
-
“流派”的值是指与流派键关联的整个对象?您能否指定方法的返回类型? (可观察的
很有帮助) -
是的,我想我会得到与流派键相关联的整个对象。我最终会从中得到 'name' 属性。
-
少数元素应该是数组,您将它们全部显示为对象
-
@cartant,谢谢,forkJoin 是我需要的,请参阅我发布的答案。如果您想发布答案,可以,我会标记为正确。
标签: firebase firebase-realtime-database rxjs