我应该如何将参数传递给Node.js中的服务层

时间:2018-07-26 14:46:05

标签: node.js asynchronous

我使用Express.js作为我的Web框架,并使用Objection.js作为我的ORM,以避免胖控制器并坚持单一责任原则,我创建了多个服务对象来执行一些业务逻辑,并且该服务对象旨在可重用。例如,我有几种订单类型,所以我创建如下服务对象:

CreateSimpleOrderService.js

class CreateSimpleOrder {
    call(params) {
       // create order
    }     
}

CreateOrderDetailService.js

class CreateOrderDetail{
    async call(orderId, params) {
       // create order details
    }     
}

FormatOrderForResponse.js

class FormatOrderForResponse {
    async call(order) {
       // format order
    }
}

这种方式效果很好,但是现在我有两个问题

  1. 例如,当我调用 FormatOrderForResponse 服务时,如果我将order参数作为对象传递,那么我最终可能会得到没有加载某些必需关系的order对象,那么我就不会偷懒正在加载,但我无从得知。如果我在将所需的关系发送到服务之前预加载了所需的关系,并且有一天需要更改格式方法并且需要加载另一个关系。我将需要为每个查询更改急切的加载代码,以获取格式类使用的对象。

  2. 如果我传递ID,那将是完美的,因为我可以使用所需的关系再次从数据库中获取对象。但这不会对每个从数据库重新加载对象的方法造成性能问题吗?

请告诉我您对问题的看法以及更好的解决方案。

谢谢。

0 个答案:

没有答案
相关问题