【发布时间】:2019-04-20 23:06:21
【问题描述】:
我正在开发 rxjs 项目,我正在使用 json-server 作为数据库提供程序。我一直在获取一个需要用另一个集合填充的集合。
我有收藏Match和收藏Tournament。 在集合 Match 中,我只有tournamentId,但我的类 Match 还包含 Tournament 实例。
class Match{
id:number;
...
tournamentId:number;
tournament: Tournament;
}
class Tournament{
id:number;
...
name:String;
}
我需要来自 db 的 2 个调用。首先获得所有锦标赛,然后获得所有比赛。
我需要返回已填充锦标赛的 Match Observable。
get(): Observable<Match> {
return Observable.create(obs => {
tournamentService.get().pipe(toArray()).subscribe(tournaments => {//tournaments = [torunament1, tournament2]
super.get().pipe(map(x => { let m = new Match(x); m.populateTournament(tournaments); obs.next(m); return m; })).subscribe(() => {
obs.complete();
});
});
});
}
obs.complete() 被立即调用,因此我最终只创建了一个可观察的匹配项。 我正在尝试在地图管道中填充 Match with Tournament,并将其作为 obs.next(m) 发送到那里。我也不知道这算不算聪明。
tournamentService.get() 和 super.get() 分别返回 Tournament 和 unpopulated Match 的 Observables (具有相同属性的 JS {object})。
我如何将 next() 一个一个匹配,然后将它们全部发送给订阅者调用 complete()?
【问题讨论】:
标签: typescript rxjs observable