6

我有这样的数字:

export enum UserRole {
  USER,
  ADMIN,
  BLOGGER
}

和 create.user.dto 这样

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”也是如此。

4

1 回答 1

9

那么您需要通过 进行正则表达式验证@Matches

  @IsOptional()
  @Matches(`^${Object.values(UserRole).filter(v => typeof v !== "number").join('|')}$`, 'i')
  role: UserRole;

最终规则是/^USER|ADMIN|BLOGGER$/i, wherei忽略大小写。

于 2020-04-19T21:14:25.890 回答