My data looks something like this in RethinkDb:
[appointments]
{
id: 1,
date: "2016-01-01",
stylistId: 1,
}
[stylists]
{
id: 1,
name: "Sue",
}
On the client, I want to fetch an appointment and have the stylist embedded in the appointment object like so:
{
id: 1,
date: "2016-01-01",
stylist: {
id: 1,
name: "Sue",
}
}
I can achieve something close using this query:
return this.hz('appointments')
.find(appointmentId)
.fetch()
.toPromise()
.then(appointment => {
return this.hz('stylists').find(appointment.stylistId)
.fetch()
.toPromise()
.then(stylist => {
appointment.stylist = stylist;
return appointment;
});
})
.then(appointment => this.appointment = appointment);
I'm wondering if there is a cleaner way to achieve the desired result. I know that RethinkDb has support for Joins but it does not look like it's exposed in Horizon. I also am not very good with RxJS so I'm wondering if the join can be more cleanly done there.
try
mergeMap
andmap
combinationI wrote it down here, so it's untested, but it should work somehow like this