以下是一些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());