Home > Net >  Nestjs class validator dto validate body parameters
Nestjs class validator dto validate body parameters

Time:08-06

Hey guys i have a DTO for validate body parameters. For example;

import { IsNotEmpty, IsString } from 'class-validator';
import { ApiProperty } from '@nestjs/swagger';

export class RejectChecklistDto {
  @IsString()
  @IsNotEmpty()
  @ApiProperty({
    example: '62d7c686b6c7ed853a33adcc',
    description: 'Checklist ID',
  })
  _id: string;
}

I am sending a post request in this method like this;

{
    "_id" : "1",
    "test" : ""
}

The problem here is that class validator accepts it. I want to throw BadRequest or something because test is not defined in dto. Can you guys help me?

CodePudding user response:

Do you may used in main.ts

whitelist: boolean

If set to true, validator will strip validated (returned) object of any properties that do not use any validation decorators.

app.useGlobalPipes(new ValidationPipe({ whitelist: true }));

forbidNonWhitelisted: boolean

If set to true, instead of stripping non-whitelisted properties validator will throw an exception.

app.useGlobalPipes(new ValidationPipe({ forbidNonWhitelisted: true }));

forbidUnknownValues: boolean

If set to true, attempts to validate unknown objects fail immediately.

app.useGlobalPipes(new ValidationPipe({ forbidUnknownValues: true }));

CodePudding user response:

try adding this to main.ts

  app.useGlobalPipes(new ValidationPipe({ whitelist: true}));

it won't throw any error but it will just discard all the values which are not in dto

  • Related