class-validator的常用验证

西门淮晨
2023-12-01

以下是一些class-validator库中常用的验证器列表,包括30个常用验证器:

IsOptional 检查给定值是否为空(=== null, === undefined) ,如果是,则忽略属性上所有验证程序
IsDefined: 检查值是否已定义
IsString: 检查值是否为字符串
IsNumber: 检查值是否为数字
IsBoolean: 检查值是否为布尔值
IsDate: 检查值是否为日期对象
IsDateString: 检查值是否为日期字符串
IsArray: 检查值是否为数组
IsEnum: 检查值是否为枚举类型
IsInt: 检查值是否为整数
IsPositive: 检查值是否为正数
IsNegative: 检查值是否为负数
Min: 检查值是否大于等于指定值
Max: 检查值是否小于等于指定值
Length: 检查值的长度是否符合指定范围
IsNotEmpty: 检查值是否非空
IsEmpty: 检查值是否为空
IsEmail: 检查值是否为电子邮件地址
IsUrl: 检查值是否为URL地址
IsPhoneNumber: 检查值是否为电话号码
Matches: 检查值是否匹配指定的正则表达式
IsBooleanString: 检查值是否为布尔字符串
IsNumberString: 检查值是否为数字字符串
IsBase64: 检查值是否为Base64字符串
IsMongoId: 检查值是否为MongoDB的ObjectId字符串
@IsPostalCode: 检查值是否为邮政编码
@IsHexColor: 检查值是否为十六进制颜色码
@IsAlpha: 检查值是否只包含字母
@IsAlphanumeric: 检查值是否只包含字母和数字
@IsAscii: 检查值是否只包含ASCII字符
@IsFullWidth: 检查值是否包含全角字符
@IsIn(values: any[]) 检查值是否在允许值的数组中
@MinDate(date: Date) 是否在指定日期之后
@MaxDate(date: Date) 是否在指定日期之前
@IsLatitude() 检查字符串或数字是否是有效的纬度坐标
@IsLongitude() 检查字符串或数字是否为有效的经度坐标

算了不记了 贴一个别人翻译的 https://blog.csdn.net/qq_38734862/article/details/117265394

nestjs 用法


// DTO写法
import { RECEIVE_TYPE, MSG_TYPE } from '@/helper/feishu/message';
import { ApiProperty } from '@nestjs/swagger';
import { IsNotEmpty, IsEnum } from 'class-validator';

export class FeishuMessageDto {
  @IsNotEmpty()
  @IsEnum(RECEIVE_TYPE)
  @ApiProperty({ example: 'email' })
  receive_id_type: RECEIVE_TYPE

  @IsNotEmpty()
  @ApiProperty({ example: 'cookieboty@qq.com' })
  receive_id?: string

  @IsNotEmpty()
  @ApiProperty({ example: '{\"text\":\" test content\"}' })
  content?: string

  @IsNotEmpty()
  @IsEnum(MSG_TYPE)
  @ApiProperty({ example: 'text' })
  msg_type?: MSG_TYPE
  
 @IsNotEmpty()
  @IsEnum(RECEIVE_TYPE)
  @ApiProperty({ example: 'email', enum: RECEIVE_TYPE })  // enum让文档识别枚举参数
  receive_id_type: RECEIVE_TYPE
}

// main.js写法
import { ValidationPipe, VersioningType, VERSION_NEUTRAL } from '@nestjs/common';
// 启动全局字段校验,保证请求接口字段校验正确。 
app.useGlobalPipes(new ValidationPipe());
 类似资料: