Node.js 类验证程序不区分大小写的枚举验证?
我有这样的anum:Node.js 类验证程序不区分大小写的枚举验证?,node.js,enums,case-sensitive,class-validator,Node.js,Enums,Case Sensitive,Class Validator,我有这样的anum: export enum UserRole { USER, ADMIN, BLOGGER } 并创建如下所示的.user.dt import { IsEmail, IsEnum, IsNotEmpty, IsOptional } from 'class-validator'; import { UserRole } from './user.entity'; export class CreateUserDto { @IsEmail() email:
export enum UserRole {
USER,
ADMIN,
BLOGGER
}
并创建如下所示的.user.dt
import { IsEmail, IsEnum, IsNotEmpty, IsOptional } from 'class-validator';
import { UserRole } from './user.entity';
export class CreateUserDto {
@IsEmail()
email: string;
@IsNotEmpty()
firstName: string;
@IsNotEmpty()
lastName: string;
@IsOptional()
username: string;
@IsOptional()
@IsEnum(UserRole)
role: UserRole;
@IsNotEmpty()
password: string;
}
现在,如果我只发布大写的角色('ADMIN','USER')或'BLOGGER',角色验证不会失败
如何使类验证器不区分大小写?我的意思是,对“admin”“admin”也要验证true。然后需要通过
@Matches
进行regexp验证
@IsOptional()
@匹配(`^${Object.values(UserRole).filter(v=>typeof v!==“number”).join('|')}$`i')
角色:UserRole;
最后一条规则是
/^USER | ADMIN | BLOGGER$/i
,其中i
忽略大小写。ENUM不会这样做,而且我认为@IsIn(数组)不区分大小写,您必须编写自定义验证器,在这里可以使用此条件Array.includes(传入值.toLowercase)