node.js - NestJS (node) - Validar solicitud por tipo genérico
Tengo dos controladores de NestJS
export class ParentController<T> {
constructor(protected service: Service<T>) {}
@Post()
do(@Body() dto: ClassType<T>): Promise<T> {
return this.service.do(dto);
}
}
... y otro controlador, extiende del padre
@Controller('any')
export class AnyController extends ParentController<Entity> {
constructor(protected service: Service) {
super(service);
}
}
Como ves, la entidad de TypeORM está vinculada con este controlador como T a través de genéricos. En el método "do(...)" usé ClassType como tipo para la validación, pero la validación no se dispara en absoluto sin tener ningún error. Según entiendo, necesita exactamente una clase, no un tipo, para ser definida como DTO.
Mi pregunta es: ¿Cómo puedo aplicar validación en el método "do(...)" usando solo mi tipo de Entidad (sin usar Entidad en sí en ParentController)? Sé que los genéricos no existen en el runtime de JS, y es difícil hacer un controlador abstracto sin tener esta característica.
P.D. Necesito hacerlo sin usar el componente nestjsx/crud
Respuesta #1
No puedes hacer eso de esa manera. De hecho, esa fue una de las razones por las que creé el paquete nestjsx/crud que utiliza el decorador @Crud() donde pasas el tipo de entidad para la validación.
Otra opción: puedes crear un mixin y pasarle una entidad allí.