NestJs:
如何使用这样的验证:
@UsePipes(ValidationPipe)
在提供商中?
文件 task.serive.ts 中的试图在方法前使用@UsePipes(ValidationPipe)
,但没有出现
答案 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,
});
}