You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 17:09:24