提供者中的ValidationPipe

时间:2020-03-23 10:33:14

标签: validation nestjs

NestJs:

如何使用这样的验证:

@UsePipes(ValidationPipe)

在提供商中?

文件 task.serive.ts 中的试图在方法前使用@UsePipes(ValidationPipe),但没有出现

2 个答案:

答案 0 :(得分:0)

您不能使用提供商提供的Nest Enhancers。它们仅绑定到Controller,Resovler和Gateway,因为这是请求进入并从中存在服务器的地方。为了解决这个问题,至少要使用类验证器,您可以实例化自己的Validator类并运行验证。

答案 1 :(得分:0)

您可以这样使用

export class LoginDto {
  // validation decorator to check for an email field!
  @IsEmail()
  readonly email: string;

  // validation decorators for password field!
  @IsNotEmpty()
  @IsString()
  readonly password: string;

  constructor(credentials: CredentialsInterface) {
    if (credentials) {
      this.email = credentials.email;
      this.password = credentials.password;
    }
  }
}

为您服务

import { validate } from 'class-validator';

const credentials = new LoginDto(req.body);
const errors = await validate(credentials);

   if (errors.length) {
      throw new BadRequestException({
        statusCode: HttpStatus.BAD_REQUEST,
        error: HttpErrors.BAD_REQUEST,
        message: errors,
      });
    }