Operador angular de 6 tubos RxJs para encadenar 3 observables dependientes
Tengo 3 recursos dependientes de la API Rest (digamos observables) como este:
1st observable produce un elemento como conjunto de usuarios, como este:
getUsers(): Observable<User[]>
[
{
"id": 1,
"name": "Peter",
"surname": "Smith"
},
{
"id": 2,
"name": "John",
"surname": "Wayne"
},
...
]
2nd observable se puede usar para obtener direcciones asignadas al usuario, por lo que el parámetro de entrada es ID de usuario y devuelve un elemento como conjunto de direcciones:
getUserAddresses(user_id: string): Observable<Address[]>
[
{
"id": 1,
"city": "London",
"street": "Wicombe 34"
},
{
"id": 2,
"city": "Paris",
"street": "La fever 20"
},
...
]
3rd observable se puede utilizar para buscar empresas asignadas al usuario, por lo que el parámetro de entrada es ID de usuario y devuelve un elemento como conjunto de empresas:
getUserCompanies(user_id: string): Observable<Company[]>
[
{
"id": 1,
"name": "Fintch CO",
"state": "France"
},
{
"id": 2,
"name": "C&C inc.",
"state": "USA"
},
...
]
Quiero encadenar estos 3 observables en uno que produzca el resultado nuevamente como un elemento, que contendrá una matriz de usuarios con sus matrices de direcciones adicionales y matriz de empresas, como las siguientes:
[
{
"id": 1,
"name": "Peter",
"surname": "Smith",
"addreesses":
[
{
"id": "1",
"city": "London",
"street": "Wicombe 34"
},
{
"id": "2",
"city": "",
"street": "La fever 20"
}
],
"companies":
[
{
"id": "1",
"name": "Fintch CO",
"state": "France"
},
{
"id": "2",
"name": "C&C inc.",
"state": "USA"
}
]
}
},
{
"id": 2,
"name": "John",
"surname": "Wayne",
"addresses": [...],
"companies": [...],
},
...
]
¿Cómo debería parecerse a los operadores compuestos para lograr eso en Angular 6 con RxJs 6? Muchas gracias por los consejos.