Итак, у меня есть сервер, который по запросу возвращает массив объектов
Пример:
[
{
id: 1
name: name1
},
{
id: 2
name: name2
}
]
Массив может иметь бесконечные элементы;
После этого мне нужно отправитьновые запросы для каждого элемента в массиве с идентификатором ответа.
пример:
https://localhost/api/parent/${id}/child
ответ:
[
{
childId: 1
name: name1
},
{
childId: 2
name: name2
},
{
childId: 3
name: name3
}
]
И после этого я должен отправить новые запросы накаждый ответ на новые запросы
пример:
https://localhost/api/parent/${id}/child/${childId}/grandChild
ответ:
[
{
grandChildId: 1
name: name1
},
{
grandChildId: 2
name: name2
},
{
grandChildId: 3
name: name3
}
]
и ответ похож на другие
и после этого у меня естьорганизовать данные так, чтобы они выглядели так:
[
{
id: 1
name: name1
children: [
{
childId: 1
name: name1,
grandChildren: [
{
grandChildId: 1
name: name1
},
{
grandChildId: 2
name: name2
},
{
grandChildId: 3
name: name3
}
]
},
{
childId: 2
name: name2
},
{
childId: 3
name: name3
}
]
},
{
id: 2
name: name2
}
]
У каждого родителя есть массив детей, а у каждого ребенка - массив grandChildren.
Это была моя попытка, но если я попробую в компоненте сделать родителей.forEach (parent => console.log (parent.childern)) не определено
getData() {
return this.http.get<Parent[]>(baseUrl + 'parent', {withCredentials: true}).pipe(
map(parents => {
parents.forEach(parent => {
this.getChildren(parent).subscribe(Children => {
parent.Children = Children;
parent.Children.forEach(Children => {
this.getGrandChildren(Children).subscribe(grandChild => {
Children.grandChildren = grandChild;
});
});
});
});
return parents;
})
);
}
getChildren(parent: Parent): Observable<Child[]> {
return this.http.get<Children[]>(baseUrl + `parent/${parent.id}/children`, {withCredentials: true});
}
getGrandChildren(child: Child): Observable<GrandChild[]> {
return this.http.get<GrandChild[]>(baseUrl + `children/${child.id}/GrandChildren`, {withCredentials: true});
}