6

摘要

如何使用Loopback 4服务生成器并创建本地服务类来处理*.repository或之外的数据*.controller

详细地

我正在开发一个系统,该系统需要外部 API 来获取数据、复杂的散列/加密等,它不属于控制器范围或存储库范围(为了干净的代码)。Loopback 4 具有lb4 service要生成的 CLI 命令,service但文档很少。如何在/service文件夹中创建一个类并导入(或注入或绑定或其他)并使用它的方法,就像我们对存储库所做的那样?

前任:

从目录中定义的this.PasswordService.encrypt('some text') 类似的服务调用方法this.TwitterApiService.getTweets()/service

4

1 回答 1

6

好的,我自己想通了。我将按照我遵循的步骤对此进行解释。

  1. 创建文件夹/src/service并在其中创建myService.service.tsindex.ts与中相同controllerrepository等等(或使用lb4 service并选择local service class)。注意:如果你想实现接口,你可以。

  2. 使用方法创建绑定键BindingKey.create()

export const MY_SERVICE = BindingKey.create<ServiceClass>('service.MyService');

ServiceClass可以是类或接口。

  1. 转到application.ts并将密钥(此处为service.MyService)绑定到服务类。
export class NoboBackend extends BootMixin(
  ServiceMixin(RepositoryMixin(RestApplication)),
) {
  constructor(options: ApplicationConfig = {}) {
    super(options);
    ...

    //add below line
    this.bind('service.MyService').toClass(ServiceClass);

    //and code goes on...
    ...
}
  1. 将服务注入您想要的类。在这里我注入一个控制器
export class PingdController {
  constructor(
    @inject(MY_SERVICE ) private myService: ServiceClass,
  ) {}
  ...
  ...
}

现在您可以像this.myService.getData(someInput)...一样访问您的服务!!!

于 2019-08-28T07:16:08.173 回答