前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【Nest教程】数据验证class-validator

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

作者头像
青年码农
发布2021-02-03 11:13:06
2.1K0
发布2021-02-03 11:13:06
举报
文章被收录于专栏:青年码农

通过前面几章节,我们项目的基础已经出来了,增加自定义过滤器和拦截器,连接MySQL,但是只能说是基础,因为很多功能我们都没有实现,今天实现的功能是对前台传入的字段进行验证。

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

1 项目安装

代码语言:javascript
复制
yarn add class-validator

2 全局验证通道

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

代码语言:javascript
复制
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-validator

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

代码语言:javascript
复制
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查看。

4 效果

运行项目,post方式请求访问地址。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-01-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 青年码农 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 MySQL
腾讯云数据库 MySQL(TencentDB for MySQL)为用户提供安全可靠,性能卓越、易于维护的企业级云数据库服务。其具备6大企业级特性,包括企业级定制内核、企业级高可用、企业级高可靠、企业级安全、企业级扩展以及企业级智能运维。通过使用腾讯云数据库 MySQL,可实现分钟级别的数据库部署、弹性扩展以及全自动化的运维管理,不仅经济实惠,而且稳定可靠,易于运维。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档