Service

2018-11-22 15:03:40

定义Service

Service的定义方式与EggJS一致

src/module/test-todo/backend/src/service/version.js

module.exports = app => {

  class Version extends app.Service {

    async update(options) {
      ...
    }
    ...
  }

  return Version;
};

引用Service

与EggJS不同之处:EggJS约定了Service的文件位置,在系统启动时自动加载。而EggBorn的Service需要通过通过require显式引用,从而便于进行模块编译

src/module/test-todo/backend/src/services.js

const version = require('./service/version.js');
const todo = require('./service/todo.js');

module.exports = app => {
  const services = {
    version,
    todo,
  };
  return services;
};

使用Service

EggBorn的Service只能在模块内部使用

当一个后端API路由被访问,创建ctx对象时,系统会将当前模块的所有Service注入到ctx对象中

使用举例:

src/module/test-todo/backend/src/controller/version.js

async update() {
  await this.service.version.update(this.ctx.request.body);
  this.ctx.success();
}

如果有类似跨模块调用代码逻辑的需求,请参考API路由中的跨模块调用机制



评论: