【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

相關文章
相關標籤/搜索