NestJS: внедрить сервис в модели / объекты - PullRequest
0 голосов
/ 23 ноября 2018

В настоящее время я застрял в проблеме, которую не знаю, как ее решить:

В моем приложении NestJS я бы хотел, чтобы все мои TypeORM Entities расширяли класс BaseEntity, которыйпредоставить некоторые общие характеристики.Например, я хотел бы предоставить дополнительный getHashedID() метод, который хэширует (и поэтому скрывает ) внутренний идентификатор от моих клиентов API.

Хеширование выполняется HashIdService,который предоставляет метод encode() и decode().

Моя установка выглядит следующим образом (убраны декораторы для удобства чтения!):

export class User extends BaseEntity {
  id: int;
  email: string;
  name: string;
  // ...
}

export class BaseEntity {
  @Inject(HashIdService) private readonly hashids: HashIdService;

  getHashedId() {
    return this.hashids.encode(this.id);
  }
}

Однако, если я вызываю this.hashids.encode()метод, он генерирует исключение с:

Cannot read property 'encode' of undefined

Как я могу inject сервис в класс entity/model?Возможно ли это вообще?

ОБНОВЛЕНИЕ # 1 В частности, я бы хотел "ввести" HashIdService в мой Entities.Кроме того, Entities должен иметь метод getHashedId(), который возвращает их хэшированный идентификатор. Поскольку я не хочу делать это «снова и снова», я хотел бы «спрятать» этот метод в BaseEntityкак описано выше ..

Моя текущая версия NestJS выглядит следующим образом:

Nest version:
+-- @nestjs/common@5.4.0
+-- @nestjs/core@5.4.0
+-- @nestjs/microservices@5.4.0
+-- @nestjs/testing@5.4.0
+-- @nestjs/websockets@5.4.0

Большое спасибо за вашу помощь!

...