I have anum like this:
export enum UserRole {
USER,
ADMIN,
BLOGGER
}
and create.user.dto like this
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;
}
Now role validation does not fail if I only post the role uppercase('ADMIN','USER') or 'BLOGGER'.
How to make class-validator not case sensitive? I mean, validate true also for 'admin' 'aDmIn'.
then you need a regexp validation via @Matches
.
@IsOptional()
@Matches(`^${Object.values(UserRole).filter(v => typeof v !== "number").join('|')}$`, 'i')
role: UserRole;
the final rule is /^USER|ADMIN|BLOGGER$/i
, where i
ignores the case.
your enum should like this
export enum UserRole {
USER = "USER",
ADMIN = "ADMIN",
BLOGGER = "BLOGGER"
}
is proven works in case-insensitive or vice versa
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With