什么情况下应该对模型操作封装成service
我的controller和service还有model是一一对应关系的。比如我有个device控制器里面有个叫做getDevice的action,那么我也就有个device的service,里面也有个getDevice的方法,然后在这service个方法里面操作模型,有时候只有一行代码,请问这种情况是否还有封装的必要,还是说直接在控制器的action里面操作模型 controller 代码
async getDevice(ctx) {
const { id } = ctx.params;
const { company_id } = ctx.state.user;
let result = await this.service.device.getDevice(id, company_id);
if (!result) {
this.ctx.throw(404, 'device not found');
}
ctx.body = result;
}
service代码
async getDevice(id, company_id) {
return await this.ctx.model.Device.scope({ method: ['company', company_id]}).findById(id);
}
4 回复
典型做法:Model层定义模型,dao层封装crud等单个model上的操作方式,service层是组合多个dao的业务层。
如果有复杂业务的,建议3个分层都要。如果没有,那就可选
如果业余不复杂,就像我文中提到的只有一个查询,是否有必要封装成一个service方法呢
个人建议:还是要的,方便以后可扩展
@luanxuechao 嗯,大部分业务都是多个表的,所以这是最好的方式