首页 > 解决方案 > Nestjs 是否支持多个 DTO 用于“推断”在单个路由上使用哪个控制器方法的模式?

问题描述

免责声明:我的愿望有明显和好的替代方案,但根据我对 Nestjs 的了解,如果以某种方式支持以下“模式”,我不会感到惊讶。

鉴于这两个 DTO:


    export class AddExistingMemberDto {
      
      @IsInt()
      memberId: number;
    }
    
    export class AddNonExistingMemberDto {
      
      @IsString()
      username: string;
      
      @IsEmail()
      email: string;
      
    }

Nestjs 可以检查请求体满足哪个 DTP,并在不同的控制器方法之间切换吗?

我试过了:


@Controller('group')
export class GroupController {

  @Patch(':id/members/add')
  addExistingMember(
    @Body() addExistingMemberDto: AddExistingMemberDto,
  ) {
    console.log('Existing', addExistingMemberDt);
  }

  @Patch(':id/members/add')
  addNonExistingMember(
    @Body() addNonExistingMemberDto: AddNonExistingMemberDto,
  ) {
    console.log('Non-existing', addNonExistingMemberDto);
  }
}

但这总是使用第一种方法调用。

基本原理:拥有一个检查 DTO 的控制器方法是一个不错的选择,但它确实需要我合并两个不同的 DTO 类。所以我只是好奇。

标签: nestjs

解决方案


推荐阅读