NestJS (узел) - проверка запроса по универсальному типу - PullRequest
0 голосов
/ 13 июня 2019

У меня есть два контроллера NestJS

export class ParentController<T> {
    constructor(protected service: Service<T>) {}

    @Post()
    do(@Body() dto: ClassType<T>): Promise<T> {
        return this.service.do(dto);
    }
}

... и другой контроллер, расширяющий родительский

@Controller('any')
export class AnyController extends ParentController<Entity> {
  constructor(protected service: Service) {
      super(service);
  }
}

Как вы видите, сущность TypeORM связана с этим контроллером как T с помощью обобщений. В методе "do (...)" я использовал ClassType в качестве типа для проверки, но проверка не запускается вообще без каких-либо ошибок. Насколько я понимаю, нужен именно класс, а не тип, который будет определен как DTO.

Мой вопрос: как я могу применить проверку к методу "do (...)", используя только мой тип Entity (не используя сам Entity в ParentController). Я знаю, что дженерики не существуют во время выполнения JS, и трудно создать абстрактный контроллер без этой функции.

P.S. Мне нужно сделать это без использования nestjsx / crud component

1 Ответ

0 голосов
/ 18 июля 2019

Вы не можете сделать это таким образом.Фактически, это была одна из причин, по которой я создал пакет nestjsx/crud, который использует декоратор @Crud(), где вы передаете тип сущности для проверки.

Другой вариант - вы можете создать миксин и передать туда сущность.

...