Nestjs 学习系列基础篇5 - 利用Pipe通道实现数据校验
参考资源
管道Pipe是什么
管道是一个用 @Injectable() 装饰器注释的类。管道应该实现 PipeTransform 接口。
主要应用场景
- 验证: 对输入数据进行验证,验证通过继续传递,否则抛出异常。
- 转化: 将输入数据转化后输出。
数据校验实战
安装
安装依赖
pnpm i class-validator class-transformer
在项目中使用
-
在
src/main.ts中添加管道Pipesrc/main.tsimport { NestFactory } from '@nestjs/core'; import { AppModule } from './app.module'; import { generateDocument } from './doc'; import { ValidationPipe } from '@nestjs/common'; async function bootstrap() { const app = await NestFactory.create(AppModule); // 添加全局管道 app.useGlobalPipes(new ValidationPipe()); // 创建 swagger api 文档 generateDocument(app); await app.listen(3000); } bootstrap(); -
在
src/user/dto/create-user.dto.ts中使用src/user/dto/create-user.dto.tsimport { ApiProperty } from "@nestjs/swagger"; import { IsNotEmpty, Matches, Max, Min, Length, IsEmail } from 'class-validator'; export class CreateUserDto { @ApiProperty({ example: '18321312321' }) @Matches(/^1\d{10}$/g, { message: '请输入手机号' }) phoneNumber: string; @ApiProperty({ example: '11111' }) @IsNotEmpty() @Length(6, 10) password: string; @ApiProperty({ example: 'aa@qq.com' }) @IsEmail() email: string; } -
测试:打开
Swagger接口文档中进行测试
项目仓库地址
注意:基础篇的的代码在 base 分支下