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á.