В настоящее время я застрял в проблеме, которую не знаю, как ее решить:
В моем приложении 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
Большое спасибо за вашу помощь!