Я работаю с двумя запросами https от двух разных конечных точек и использую forkJoin для объединения двух результатов.Я борюсь с тем, чтобы передать данные из «информации» соответствующей команде в «турнирной таблице», поскольку «информация» содержит более подробную информацию о каждой футбольной команде.
Мой сервис:
espStandings() {
return this.httpClient.get<Leagueinfo>('http://site.web.api.espn.com/apis/v2/sports/soccer/esp.1/standings?desc');
}
espInfo() {
return this.httpClient.get<Teaminfo>('https://site.api.espn.com/apis/site/v2/sports/soccer/esp.1/teams');
}
public getEsp() {
return forkJoin(this.espStandings(), this.espInfo()).pipe(map(([standings, info]) => {
return { standings, info };
}));
}
Таблица результатов возвращает массив со всеми подобными командами (это первая команда в массиве записей):
entries: Array(20)
0:
note: {color: "#81D6AC", description: "Champions League", rank: 1}
stats: (10) [{…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}]
team: {id: "3747", uid: "s:600~t:3747", location: "Granada", name: "Granada", abbreviation: "GCF", …}
Я хочу добавить еще один объект с именем «запись» к каждой команде в«записи» с данными из «инфо».
Объект «запись» из результата «инфо» выглядит следующим образом:
record:
items: Array(1)
0:
stats: (22) [{…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}]
Таким образом, конечный результат для каждой команды будет:
entries: Array(20)
0:
note: {color: "#81D6AC", description: "Champions League", rank: 1}
stats: (10) [{…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}]
team: {id: "3747", uid: "s:600~t:3747", location: "Granada", name: "Granada", abbreviation: "GCF", …}
record: {items: Array(1)}
Пример JSON для турнирной таблицы:
{
"uid": "s:600~l:740",
"id": "15",
"name": "Spanish Primera División",
"abbreviation": "La Liga",
"children": [
{
"uid": "s:600~l:740~g:1",
"id": "1",
"name": "2019-20 LaLiga",
"abbreviation": "2019-2020",
"standings": {
"id": "0",
"name": "overall",
"displayName": "Overall Standings",
"links": [
{
"language": "en",
"rel": [
"standings",
"desktop"
],
"href": "http://www.espn.com/spanish-primera-division/15/table",
"text": "Table",
"shortText": "Table",
"isExternal": false,
"isPremium": false
}
],
"season": 2019,
"seasonType": 1,
"entries": [
{
"team": {
"id": "3747",
"uid": "s:600~t:3747",
"location": "Granada",
"name": "Granada",
"abbreviation": "GCF",
"displayName": "Granada",
"shortDisplayName": "Granada",
"isActive": true,
"logos": [
{
"href": "https://a.espncdn.com/i/teamlogos/soccer/500/3747.png",
"width": 500,
"height": 500,
"alt": "",
"rel": [
"full",
"default"
]
}
],
"links": [
{
"language": "en",
"rel": [
"clubhouse",
"desktop",
"team"
],
"href": "http://www.espn.com/football/club/_/id/3747/granada",
"text": "Clubhouse",
"shortText": "Clubhouse",
"isExternal": false,
"isPremium": false
}
]
},
"note": {
"color": "#81D6AC",
"description": "Champions League",
"rank": 1
},
"stats": [
{
}
]
Пример JSON для информации:
{
"sports": [
{
"id": "600",
"uid": "s:600",
"name": "Football",
"slug": "soccer",
"leagues": [
{
"id": "740",
"uid": "s:600~l:740",
"name": "Spanish Primera División",
"abbreviation": "La Liga",
"shortName": "La Liga",
"slug": "spanish-primera-division",
"teams": [
{
"team": {
"id": "96",
"uid": "s:600~t:96",
"slug": "alaves",
"location": "Alavés",
"name": "Alavés",
"abbreviation": "ALV",
"displayName": "Alavés",
"shortDisplayName": "Alavés",
"color": "0000ff",
"alternateColor": "C8142F",
"isActive": true,
"isAllStar": false,
"logos": [
{
"href": "https://a.espncdn.com/i/teamlogos/soccer/500/96.png",
"width": 500,
"height": 500,
"alt": "",
"rel": [
"full",
"default"
]
},
{
"href": "https://a.espncdn.com/i/teamlogos/soccer/500-dark/96.png",
"width": 500,
"height": 500,
"alt": "",
"rel": [
"full",
"dark"
]
}
],
"record": {
"items": [
{
"summary": "1-2-2",
"stats": []
}
Надеясь, что кто-то может указать мне правильное направление.