管道Pipe是什么
中文文档
https://docs.nestjs.cn/9/pipes
一个可注入类(@Injectable()可以使用Pipe完成输入输出参数的事前和事后处理。
主要应用场景
- 验证: 对输入数据进行验证,验证通过继续传递,否则抛出异常。
- 转化: 将输入数据转化后输出。
这里我们主要说的就是验证
数据校验实战
安装依赖
pnpm i class-validator class-transformer
全局使用
src/main.ts
async function bootstrap() {
const app = await NestFactory.create(AppModule);
// 添加全局管道
app.useGlobalPipes(new ValidationPipe())
await app.listen(3000);
}
bootstrap();
create-user.dto.ts
import { ApiProperty } from "@nestjs/swagger"
import { IsNotEmpty, Matches } from 'class-validator'
export class CreateUserDto {
@ApiProperty({ example: "shaka" })
@IsNotEmpty()
name: string
@ApiProperty({ example: "male" })
@IsNotEmpty()
sex: string
@ApiProperty({ example: "123" })
@Matches(/^1\d{10}$/g, { message: '请输入手机号' })
phone: string
}
我们测试一下,讲名字设置为空
可以看到返回了对应的结果