Я работаю над проектом rxjs и использую json-сервер в качестве поставщика базы данных.Я застрял при получении одной коллекции, которую мне нужно заполнить другой коллекцией.
У меня есть коллекция Match и коллекция Tournament .Внутри коллекции Match у меня есть только tourId, но мой класс Match также содержит экземпляр Tournament.
class Match{
id:number;
...
tournamentId:number;
tournament: Tournament;
}
class Tournament{
id:number;
...
name:String;
}
Мне нужно 2 звонка из дБ.Сначала, чтобы получить все турниры, а затем получить все совпадения.
Мне нужно вернуть Наблюдаемый матч , который был заполнен Турниром.
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 в наблюдаемой, который создан.Я пытаюсь заполнить Матч с Турниром в конвейере карты, а также отправить туда obs.next (m) .Я тоже не знаю, разумно ли это.
tourService.get () и super.get () вернуть наблюдаемые значения Турнир и незаполненное совпадение соответственно (JS {объект} с одинаковыми атрибутами).
Как мне выполнить next () совпадения одно за другим и после того, как все они отправлены абоненту, вызов завершен ()?