我在mysql中的订单表可观的链组,每个订单有许多与之相关联的文件,无论是报价单,发票等有因此第二张称为“文档”的表具有“document_id”主键和“order_id”外键;以类似的方式,我还有另外一种情况,即技术人员对每辆车进行的不同检查,然后是另一张车辆图片。我创建使用节点,并表达需要返回一个类似的JSON Web服务...如何,以前是每一个在forkjoin()操作
[
{
"order_id": 1003,
"customer_id": 8000,
"csi": 90,
"date_admitted": "2016-10-28T05:00:00.000Z",
"plates": "YZG-5125",
...
documents: {
"type": "invoice",
"number": "1234",
...
},
checks: {
"scanner": "good",
"battery": "average",
...
},
vehicle_pictures: {
"title": "a title...",
"path": "the file path"
...
}
},
{
...
},
...
]
正如你所看到的,它是必要做的每一个订单三个查询,一个用于检查,另一个用于文档,第三个用于图片,那么我需要将这些子结果添加到最终返回响应中的数组的顺序。
在旧版的同步编程中这将是一件非常容易的事情,但是由于mysql库的连接对象中query()方法的异步性质,这种威胁变成了一个真正的地狱。
在需要处理单个订单的情况下,使用forkJoin()在服务器上使用RxJS库就足以一次处理所有三个结果,但我不确定如何“链接”每个(使用forkJoin来管理3个查询),所以所有事情都得到了处理,最后我可以调用res.json(result),并将所有东西都整齐地组合起来。
注:我想RxJS而是采用了同步库包像节点的mysql-的libmysqlclient来解决这个问题。原因基本上是,像Node JS这样的异步语言的“正确”方式是异步的。此外,我想用RxJS而不是异步,Q承诺,或任何其他库,因为观测量似乎是在异步解决方案大赛绝对的赢家,也希望在我开发的所有解决方案一致的,所以这个问题主要是面向对RxJS主人。
而且每一个问题,我在如此的相似,这个发现具有典型的“纯粹”的答复说,如果你正在使用节点你“应该”使用异步不要以为同步解决方案。因此,这是对那些捍卫这一立场是一个挑战,因为这(我认为)是其中的节点同步很有意义的案例之一,但我真的想学习如何与RxJS,而不是以为这是不可能做到这一点,我相信这不是。
你尝试过这么远吗?你卡在哪里?这将净化更好的质量答案。 – paulpdaniels