4、Service的简单使用

370 阅读1分钟

Service用来编写和数据库直接交互的业务逻辑代码,就是在复杂业务场景下用于做业务逻辑封装的一个抽象层。

简单来说,Service就是把业务逻辑代码进一步细化和分类,所以和数据库交互的代码都放到Service中。这样作有三个明显的好处。建议只要是和数据库的交互操作,都写在Service里,用了Egg框架,就要遵守它的约定。

  • 保持Controller中的逻辑更加简介。
  • 保持业务逻辑的独立性,抽象出来的Service可以被多个Controller调用。
  • 将逻辑和展现分离,更容易编写测试用例。

1. 简单编写一个Service Egg规定Service文件必须放在/app/service目录,所以我们在/app文件夹下面,新建一个service文件夹。然后在新建一个home.js文件。

'use strict';

const Service = require('egg').Service;

class HomeService extends Service {
  async getHome(res) {
    // 后期在这里可进行数据库的相关操作
    return {
      id: res.id,
      name: res.name,
      age: '18',
    };
  }

}

module.exports = HomeService;

命名规则和写法跟Controller是非常类似的,同样Service里的方法也全部是异步方法,所以要使用async关键字。

2. 调用编写好的Service

/app/controller/home.js文件中的gettest2( )方法。

async gettest2() {
    const { ctx } = this;
    const res = await ctx.service.home.getHome(ctx.params);
    ctx.body = res;
  }

3. 配置路由

router.get('/gettest2/:id/:name', controller.home.gettest2);

4. 请求http://127.0.0.1:7001/gettest2/1/xiaohong image.png

注:写好一个service方法,也可以在其它的Controller里进行使用。

学习日期:2021/12/23

视频参考www.bilibili.com/video/BV1s3…

文档参考jspang.com/detailed?id…

仅供个人学习和记录