【Nest教程】数据验证class-validator

经过前面几章节,咱们项目的基础已经出来了,增长自定义过滤器和拦截器,链接MySQL,可是只能说是基础,由于不少功能咱们都没有实现,今天实现的功能是对前台传入的字段进行验证。git

说白一点,就是一个接口,一定有必填字段和字段的要求,若是前台调用这个接口,字段不符合,应正确提示不符合的字段,class-validator 用于入的数据验证。github

1 项目安装bootstrap

yarn add class-validator

2 全局验证通道app

对比前面的教程,能够看出这个问文件,只添加两行代码,一行是导入ValidationPipe ,另外一行是开启一个全局验证通道async

import { NestFactory } from '@nestjs/core';
import { ValidationPipe } from '@nestjs/common';
import { AppModule } from './app.module';
import { HttpExceptionFilter } from './filters/http-exception.filter';
import { TransformInterceptor } from './interceptor/transform.interceptor';

async function bootstrap() {
  const app = await NestFactory.create(AppModule);
  app.useGlobalFilters(new HttpExceptionFilter());
  app.useGlobalInterceptors(new TransformInterceptor());
  app.useGlobalPipes(new ValidationPipe()); //开启一个全局验证管道
  await app.listen(3000);
}
bootstrap();

3 使用class-validatoride

为了项目统一管理,咱们在以前的User模块下,新建Dto文件夹,这里面放置咱们的文件,新建一个用户查询的Dto,文件内容以下:post

import { IsNotEmpty, Length } from 'class-validator';
export class QueryUserDto {
  @IsNotEmpty({ message: '用户名不为空' })
  @Length(10, 20, { message: 'name的长度不能小于10不能大于20' })
  readonly name: string;
  @IsNotEmpty({ message: '昵称不为空' })
  readonly nickname: string;
}

class-validator定义不少,咱们这里只演示IsNotEmpty, Length,若是须要更多的文档,请https://github.com/typestack/class-validator查看。code

4 效果orm

运行项目,post方式请求访问地址。
【Nest教程】数据验证class-validatorblog

相关文章
相关标签/搜索