node.js - NestJS (node) - Validar pedido por tipo genérico


Eu tenho dois controladores NestJS

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

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

... e outro controlador, estende o pai

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

Como pode ver, a Entidade TypeORM está ligada a este controlador como T através de genéricos. No método "do(...)" usei ClassType como tipo para validação, mas a validação não é ativada de todo sem apresentar erros. Pelo que entendo, é necessário definir exatamente uma classe, e não apenas um tipo, como DTO.

A minha pergunta é: Como posso aplicar validação no método "do(...)" usando apenas o meu tipo de Entidade (não usando a Entidade em si no ParentController). Eu sei que os genéricos não existem no runtime do JS, e é difícil criar um controlador abstrato sem ter esta funcionalidade.

P.S. Preciso de o fazer sem usar o componente nestjsx/crud

Resposta #1

Não podes fazer isso dessa forma. Na verdade, essa foi uma das razões pelas quais criei o pacote nestjsx/crud que utiliza o decorador @Crud() onde passas o tipo de entidade para validação.

Outra opção - pode criar um mixin e passar uma entidade lá.