我有两个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的类型。
我的问题是:我如何仅使用我的Entity类型(不使用ParentController中的Entity本身)对方法“ do(...)”应用验证。我知道在JS运行时中不存在泛型,并且如果不具有此功能,很难制作抽象控制器。
P.S。我不需要使用 nestjsx / crud 组件
答案 0 :(得分:0)
您不能那样做。
实际上,这就是我创建使用nestjsx/crud
装饰器的@Crud()
程序包的原因之一,您在其中传递了实体类型进行验证。
另一个选项-您可以创建一个mixin并在其中传递实体。