DTO в гнезде js принимает больше параметров по сравнению с DTO - PullRequest
0 голосов
/ 30 января 2020

У меня есть DTO


export class UpdateUserRoleDTO {
  @ApiProperty()
  @IsNotEmpty()
  readonly userId:number;

  @ApiProperty()
  @IsNotEmpty()
  @IsNumber()
  readonly roleId: number;
}

Мой контроллер выглядит так

@UsePipes(new ValidationPipe())
  @Post('/update')
  async updateUser(@Body() updateUserDto: UpdateUserDTO): Promise<User> {
    return await this.userService.updateUser(updateUserDto);
  }

Всякий раз, когда клиент отправляет запрос со следующей полезной нагрузкой

payloadObj = {
   userId : 1,
   roleId : 1,
   xyz : 'assddcds',
   someotherkey : 'fsdvs'
}

Это сбивает Мой сервисный файл. Я хочу избежать этого, убедитесь, что только параметр, указанный в DTO, должен быть передан, иначе он должен дать 400

1 Ответ

0 голосов
/ 30 января 2020

учитывая ваш код, я бы передал опцию белый список , установленную в true , на ValidationPipe, который вы создаете, как в контроллере:

controller.ts

@UsePipes(new ValidationPipe({ whitelist: true }))
@Post('/update')
async updateUser(@Body() updateUserDto: UpdateUserDTO): Promise<User> {
  return await this.userService.updateUser(updateUserDto);
}

Это должно сработать.

Дайте мне знать, если это поможет, в противном случае не стесняйтесь комментировать и делиться своими выводами;)

...