NestJS GraphQL基础解析器泛型Mutation入参校验失效问题
当前表现
- 项目中存在一个基类以及若干派生类
- 定义了
BaseResolver基础解析器,所有派生类对应的解析器均继承自该基础解析器 BaseResolver内部实现了一个create Mutation(变更操作)- 该create Mutation会根据继承的派生类不同,接收不同结构的入参
- 项目定义了基类对应的create DTO,所有派生类的create DTO均继承自该基类DTO
- 派生类解析器继承
BaseResolver时,会将自身对应的create DTO类作为参数传入BaseResolver
基础解析器代码定义如下:
export function BaseResolver< T extends Type<BaseClass>, createClassDto extends Type<CreateBaseClassDto>, >(classRef: T, createClassArgsDtoRef: createClassDto): any
派生类解析器代码定义如下:
@Resolver((of) => DerivedXClass) export class DerivedXResolver extends BaseResolver( DerivedXClass, CreateDerivedXDto, )
- Mutation方法中入参的类型指定方式如下:
async createMutation( @Args({ type: () => createClassArgsDtoRef }) args: Type<CreateBaseClassDto>, )
- 按照上述方式实现后,接口接收到的入参完全没有触发校验逻辑
最小复现代码
配套示例仓库包含完整复现步骤以及预期行为说明。
内容的提问来源于stack exchange,提问作者Snigdha Singh
相关产品推荐
相关产品推荐

