在 Loopback 4 中使用服务
Use services in Loopback 4
摘要
如何使用 Loopback 4
服务生成器和创建本地服务 class 来处理 *.repository
或 *.controller
之外的数据
详细
我正在开发一个需要外部 API 来获取数据的系统,复杂 hashing/encryption 等不属于控制器范围或存储库范围(为了干净的代码)。 Loopback 4 有 CLI 命令 lb4 service
来生成 service
并且这没有很好的记录。如何在 /service
文件夹中创建一个 class 并导入(或注入或绑定或其他)并像我们处理存储库一样使用它的方法?
例如:
从类似 this.PasswordService.encrypt('some text')
的服务中调用方法
或
this.TwitterApiService.getTweets()
在 /service
目录中定义
好的,这是我自己想出来的。我将按照我遵循的步骤对此进行解释。
创建文件夹 /src/service
并在其中创建 myService.service.ts
和 index.ts
与 controller
、repository
等相同(或使用 lb4 service
和 select local service class
)。注意:如果要实现接口,可以。
使用BindingKey.create()
方法创建绑定密钥。
export const MY_SERVICE = BindingKey.create<ServiceClass>('service.MyService');
ServiceClass
可以是 class 或接口。
- 转到
application.ts
并将密钥(此处 service.MyService)绑定到服务 class.
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...
...
}
- 将服务注入您想要的class。这里我注入一个控制器
export class PingdController {
constructor(
@inject(MY_SERVICE ) private myService: ServiceClass,
) {}
...
...
}
现在您可以像 this.myService.getData(someInput)
...!!!
一样访问您的服务
摘要
如何使用 Loopback 4
服务生成器和创建本地服务 class 来处理 *.repository
或 *.controller
详细
我正在开发一个需要外部 API 来获取数据的系统,复杂 hashing/encryption 等不属于控制器范围或存储库范围(为了干净的代码)。 Loopback 4 有 CLI 命令 lb4 service
来生成 service
并且这没有很好的记录。如何在 /service
文件夹中创建一个 class 并导入(或注入或绑定或其他)并像我们处理存储库一样使用它的方法?
例如:
从类似 this.PasswordService.encrypt('some text')
的服务中调用方法
或
this.TwitterApiService.getTweets()
在 /service
目录中定义
好的,这是我自己想出来的。我将按照我遵循的步骤对此进行解释。
创建文件夹
/src/service
并在其中创建myService.service.ts
和index.ts
与controller
、repository
等相同(或使用lb4 service
和 selectlocal service class
)。注意:如果要实现接口,可以。使用
BindingKey.create()
方法创建绑定密钥。
export const MY_SERVICE = BindingKey.create<ServiceClass>('service.MyService');
ServiceClass
可以是 class 或接口。
- 转到
application.ts
并将密钥(此处 service.MyService)绑定到服务 class.
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...
...
}
- 将服务注入您想要的class。这里我注入一个控制器
export class PingdController {
constructor(
@inject(MY_SERVICE ) private myService: ServiceClass,
) {}
...
...
}
现在您可以像 this.myService.getData(someInput)
...!!!