Nestjs dto @IsEnum() 验证器不起作用

问题描述 投票:0回答:1

我有一个像这样的简单dto

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

export enum Status {
  New = 'New',
  Old = 'Old',
}
export class UpdateStatusDto {
  @ApiProperty({
    enum: ContactStatus,
    description: 'User Status',
    required: true,
  })
  @IsEnum(Status)
  status: Status;
}

预期的行为是在传递 New 或 Old 以外的任何其他值时抛出错误。

但不验证。我怎样才能确保验证

nestjs nestjs-swagger
1个回答
0
投票

如果您已经确保这一点但仍未验证,则可能有一个验证管道可供您检查:

验证管道:确保您在全局范围内设置了验证管道或将其范围限定为控制器或方法。您可以在 main.ts 或 app.module.ts 文件中设置全局验证管道,如下所示:

import { ValidationPipe } from '@nestjs/common';

async function bootstrap() {
  const app = await NestFactory.create(AppModule);
  app.useGlobalPipes(new ValidationPipe());
  await app.listen(3000);
}
bootstrap();

这可确保所有传入请求都根据定义的 DTO 进行验证。

© www.soinside.com 2019 - 2024. All rights reserved.