Используйте сервисы в Loopback 4

Абстракция

Как использовать Loopback 4 генератор служб и создать локальный класс обслуживания для обработки данных за пределами *.repository или *.controller

Подробнее

Я разрабатываю систему, которая требует внешних API-интерфейсов для извлечения данных, сложного хеширования / шифрования и т. Д., Которые не попадают в область действия контроллера или репозитория (ради чистого кода). В Loopback 4 есть команда CLI lb4 service для генерации service, и это плохо документировано. Как создать класс внутри папки /service и импортировать (или внедрить, или связать, или что-то еще) и использовать его методы, как мы это делаем с репозиториями?

пример:

вызывать методы из службы, например this.PasswordService.encrypt('some text') или this.TwitterApiService.getTweets(), которые определены в /service каталоге


person Salitha    schedule 27.08.2019    source источник


Ответы (1)


Хорошо, я сам в этом разобрался. Я объясню это в шагах, которые я выполнил.

  1. создайте папку /src/service и внутри нее создайте myService.service.ts и index.ts, как в _4 _, _ 5_ и т. д. (или используйте 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,
  ) {}
  ...
  ...
}

Теперь вы можете получить доступ к своей услуге, например, _14 _... !!!

person Salitha    schedule 28.08.2019