Javascript 有没有更好的方法来;加入;数据使用地平线?
我的数据在数据库中显示如下:Javascript 有没有更好的方法来;加入;数据使用地平线?,javascript,rxjs,rethinkdb,horizon,Javascript,Rxjs,Rethinkdb,Horizon,我的数据在数据库中显示如下: [预约] { id:1, 日期:“2016-01-01”, 类型:1, } [造型师] { id:1, 姓名:“苏”, } 在客户端上,我希望获取一个约会,并将设计师嵌入到约会对象中,如下所示: { id:1, 日期:“2016-01-01”, 造型师:{ id:1, 姓名:“苏”, } } 我可以使用此查询实现一些接近的结果: 返回此.hz(“约会”) .find(任命ID) .fetch() .toPromise() 。然后(预约=>{ 返回此.hz('st
[预约]
{
id:1,
日期:“2016-01-01”,
类型:1,
}
[造型师]
{
id:1,
姓名:“苏”,
}
在客户端上,我希望获取一个约会,并将设计师嵌入到约会对象中,如下所示:
{
id:1,
日期:“2016-01-01”,
造型师:{
id:1,
姓名:“苏”,
}
}
我可以使用此查询实现一些接近的结果:
返回此.hz(“约会”)
.find(任命ID)
.fetch()
.toPromise()
。然后(预约=>{
返回此.hz('stylests').find(appointment.stylestId)
.fetch()
.toPromise()
。然后(造型师=>{
appointment.stylest=设计师;
回程预约;
});
})
.然后(约会=>this.appointment=约会);
我想知道是否有更干净的方法来达到预期的效果。我知道RejectDB支持联接,但它看起来不像是在Horizon中公开的。我对RxJS也不是很好,所以我想知道是否可以在那里更干净地完成连接。尝试
mergeMap
和map
组合
const appointmentFind$ = (appointmentId) => hz('appointments').find(appointmentId).fetch();
const stylistFind$ = (stylistId) => hz('stylists').find(stylistId).fetch();
appointmentFind$(appointmentId)
.mergeMap((appointment) => stylistFind$(appointment.stylistId)
.map((stylist) => ({ ...appointment, stylist })))
.subscribe((x) => console.log(x));
我写在这里,所以它没有经过测试,但它应该像这样工作