Node.js 类验证程序不区分大小写的枚举验证?

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:

我有这样的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: 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)