Skip to content

Class Validator

Validation messages

typescript
import { MinLength, MaxLength } from "class-validator";

export class Post {
  @MinLength(10, {
    message: "Title is too short",
  })
  @MaxLength(50, {
    message: "Title is too long",
  })
  title: string;
}

Validating arrays & set & map

typescript
import { MinLength, MaxLength } from "class-validator";

export class PostArray {
  @MaxLength(20, {
    each: true,
  })
  tags: string[];
}

export class PostSet {
  @MaxLength(20, {
    each: true,
  })
  tags: Set<string>;
}

export class PostMap {
  @MaxLength(20, {
    each: true,
  })
  tags: Map<string, string>;
}

Validating nested objects

중첩된 객체는 클래스의 인스턴스여야 하며, 그렇지 않으면 @ValidateNested가 어떤 클래스가 유효성 검사 대상인지 알지 못합니다.

typescript
import { ValidateNested } from "class-validator";

export class Post {
  @ValidateNested()
  user: User;
}

Validating promises

typescript
import { ValidateNested, ValidatePromise, Min } from "class-validator";

export class Post {
  @Min(0)
  @ValidatePromise()
  userId: Promise<number>;
}

export class Post {
  @ValidateNested()
  @ValidatePromise()
  user: Promise<User>;
}

Conditional validation

조건부 유효성 검사 데코레이터(@ValidateIf)는 제공된 조건 함수가 거짓을 반환할 때 프로퍼티의 유효성 검사기를 무시하는 데 사용할 수 있습니다.

typescript
import { ValidateIf, IsNotEmpty } from "class-validator";

export class Post {
  otherProperty: string;

  @ValidateIf((o) => o.otherProperty === "value")
  @IsNotEmpty()
  example: string;
}

valdation decorator

데코레이터설명
일반적인 유효성 검사 데코레이터
@IsDefined(value: any)값이 정의되었는지 확인합니다(!== 정의되지 않음, !== null). 이것은 SkipMissingProperties 옵션을 무시하는 유일한 데코레이터입니다.
@IsOptional()주어진 값이 비어 있는지(=== null, === 정의되지 않음) 확인하고, 그렇다면 속성의 모든 유효성 검사기를 무시합니다.
@Equals(comparison: any)값이 ("===") 비교와 같은지 확인합니다.
@NotEquals(comparison: any)값이 같지 않은지 확인합니다("!==") 비교.
@IsEmpty()주어진 값이 비어 있는지 확인합니다(=== '', === null, === 정의되지 않음).
@IsNotEmpty()주어진 값이 비어 있지 않은지 확인합니다(!== '', !== null, !== 정의되지 않음).
@IsIn(values: any[])값이 허용되는 값의 배열에 있는지 확인합니다.
@IsNotIn(values: any[])값이 허용되지 않는 값의 배열에 없는지 확인합니다.
유형 검증 데코레이터
@IsBoolean()값이 부울인지 확인합니다.
@IsDate()값이 날짜인지 확인합니다.
@IsString()값이 문자열인지 확인합니다.
@IsNumber(options: IsNumberOptions)값이 숫자인지 확인합니다.
@IsInt()값이 정수인지 확인합니다.
@IsArray()값이 배열인지 확인합니다.
@IsEnum(entity: object)값이 유효한 열거형인지 확인합니다.
숫자 검증 데코레이터
@IsDivisibleBy(num: number)값이 다른 숫자로 나누어지는 숫자인지 확인합니다.
@IsPositive()값이 0보다 큰 양수인지 확인합니다.
@IsNegative()값이 0보다 작은 음수인지 확인합니다.
@Min(min: number)주어진 숫자가 주어진 숫자보다 크거나 같은지 확인합니다.
@Max(max: number)주어진 숫자가 주어진 숫자보다 작거나 같은지 확인합니다.
날짜 유효성 검사 데코레이터
@MinDate(date: Date | (() => Date))값이 지정된 날짜 이후의 날짜인지 확인합니다.
@MaxDate(date: Date | (() => Date))값이 지정된 날짜 이전의 날짜인지 확인합니다.
문자열 유형 유효성 검사 데코레이터
@IsBooleanString()문자열이 부울인지 확인합니다(예: "true", "false" 또는 "1", "0").
@IsDateString()Alias for @IsISO8601()
@IsNumberString(options?: IsNumericOptions)문자열이 숫자인지 확인합니다.
문자열 검증 데코레이터
@Contains(seed: string)문자열에 seed가 포함되어 있는지 확인합니다.
@NotContains(seed: string)문자열에 seed가 포함되어 있지 않은지 확인합니다.
@IsAlpha()문자열에 문자(a-zA-Z)만 포함되어 있는지 확인합니다.
@IsAlphanumeric()문자열에 문자와 숫자만 포함되어 있는지 확인합니다.
@IsDecimal(options?: IsDecimalOptions)문자열이 유효한 십진수 값인지 확인합니다. 기본 IsDecimalOptions는 force_decimal=False, decimal_digits: '1,',locale: 'en-US'
@IsAscii()문자열에 ASCII 문자만 포함되어 있는지 확인합니다.
@IsBase32()문자열이 base32로 인코딩되었는지 확인합니다.
@IsBase58()문자열이 base58로 인코딩되었는지 확인합니다.
@IsBase64(options?: IsBase64Options)문자열이 base64로 인코딩되었는지 확인합니다.
@IsIBAN()문자열이 IBAN(국제 은행 계좌 번호)인지 확인합니다.
@IsBIC()문자열이 BIC(은행 식별 코드) 또는 SWIFT 코드인지 확인합니다.
@IsByteLength(min: number, max?: number)문자열의 길이(바이트)가 범위에 속하는지 확인합니다.
@IsCreditCard()문자열이 신용카드인지 확인합니다.
@IsCurrency(options?: IsCurrencyOptions)문자열이 유효한 통화 금액인지 확인합니다.
@IsISO4217CurrencyCode()문자열이 ISO 4217 통화 코드인지 확인합니다.
@IsEthereumAddress()기본 정규식을 사용하여 문자열이 이더리움 주소인지 확인합니다. 주소 체크섬의 유효성을 검사하지 않습니다.
@IsBtcAddress()문자열이 유효한 BTC 주소인지 확인합니다.
@IsDataURI()문자열이 데이터 URI 형식인지 확인합니다.
@IsEmail(options?: IsEmailOptions)문자열이 이메일인지 확인합니다.
@IsFQDN(options?: IsFQDNOptions)문자열이 정규화된 도메인 이름(예: domain.com)인지 확인합니다.
@IsFullWidth()문자열에 전각문자가 포함되어 있는지 확인합니다.
@IsHalfWidth()문자열에 반각문자가 포함되어 있는지 확인합니다.
@IsVariableWidth()문자열에 전각 문자와 반각 문자가 혼합되어 있는지 확인합니다.
@IsHexColor()문자열이 16진수 색상인지 확인합니다.
@IsHSL()문자열이 CSS 색상 레벨 4 사양을 기반으로 하는 HSL 색상인지 확인합니다 .
@IsRgbColor(options?: IsRgbOptions)문자열이 rgb 또는 rgba 색상인지 확인합니다.
@IsIdentityCard(locale?: string)문자열이 유효한 신분증 코드인지 확인합니다.
@IsPassportNumber(countryCode?: string)문자열이 특정 국가 코드와 관련된 유효한 여권 번호인지 확인합니다.
@IsPostalCode(locale?: string)문자열이 우편번호인지 확인합니다.
@IsHexadecimal()문자열이 16진수인지 확인합니다.
@IsOctal()문자열이 8진수인지 확인합니다.
@IsMACAddress(options?: IsMACAddressOptions)문자열이 MAC 주소인지 확인합니다.
@IsIP(version?: |"4"|"6")문자열이 IP(버전 4 또는 6)인지 확인합니다.
@IsPort()문자열이 유효한 포트 번호인지 확인합니다.
@IsISBN(version?: |"10"|"13") 문자열이 ISBN(버전 10 또는 13)인지 확인합니다.
@IsEAN()문자열이 EAN(유럽 물품 번호)인지 확인합니다.
@IsISIN()문자열이 ISIN(주식/증권 식별자)인지 확인합니다.
@IsISO8601(options?: IsISO|8601Options)문자열이 유효한 ISO 8601 날짜 형식인지 확인합니다. 유효한 날짜를 추가로 확인하려면 strict = true 옵션을 사용하세요.
@IsJSON()문자열이 유효한 JSON인지 확인합니다.
@IsJWT()문자열이 유효한 JWT인지 확인합니다.
@IsObject()객체가 유효한 객체인지 확인합니다(null, 함수, 배열은 false를 반환함).
@IsNotEmptyObject()객체가 비어 있지 않은지 확인합니다.
@IsLowercase()문자열이 소문자인지 확인합니다.
@IsLatLong()문자열이 위도, 경도 형식의 유효한 위도-경도 좌표인지 확인합니다.
@IsLatitude()문자열이나 숫자가 유효한 위도 좌표인지 확인합니다.
@IsLongitude()문자열이나 숫자가 유효한 경도 좌표인지 확인합니다.
@IsMobilePhone(locale: string)문자열이 휴대폰 번호인지 확인합니다.
@IsISO31661Alpha2()문자열이 유효한 ISO 3166-1 alpha-2 공식 할당 국가 코드인지 확인합니다.
@IsISO31661Alpha3()문자열이 유효한 ISO 3166-1 alpha-3 공식 할당 국가 코드인지 확인합니다.
@IsLocale()문자열이 로케일인지 확인합니다.
@IsPhoneNumber(region: string) libphonenumber-js를 사용하여 문자열이 유효한 전화번호인지 확인합니다.
@IsMongoId()문자열이 MongoDB ObjectId의 유효한 16진수 인코딩 표현인지 확인합니다.
@IsMultibyte()문자열에 하나 이상의 멀티바이트 문자가 포함되어 있는지 확인합니다.
@IsNumberString(options?: IsNumericOptions)문자열이 숫자인지 확인합니다.
@IsSurrogatePair()문자열에 서로게이트 쌍 문자가 포함되어 있는지 확인합니다.
@IsTaxId()문자열이 유효한 세금 ID인지 확인합니다. 기본 로케일은 입니다 en-US.
@IsUrl(options?: IsURLOptions)문자열이 URL인지 확인합니다.
@IsMagnetURI()문자열이 자석 URI 형식 인지 확인합니다 .
@IsUUID(version?: UUIDVersion)문자열이 UUID(버전 3, 4, 5 또는 all )인지 확인합니다.
@IsFirebasePushId()문자열이 Firebase 푸시 ID 인지 확인합니다.
@IsUppercase()문자열이 대문자인지 확인합니다.
@Length(min: number, max?: number) 문자열의 길이가 범위에 속하는지 확인합니다.
@MinLength(min: number)문자열의 길이가 주어진 숫자보다 작지 않은지 확인합니다.
@MaxLength(max: number)문자열의 길이가 주어진 숫자보다 크지 않은지 확인합니다.
@Matches(pattern: RegExp|, modifiers?: string)문자열이 패턴과 일치하는지 확인합니다. 일치('foo', /foo/i) 또는 일치('foo', 'foo', 'i')입니다.
@IsMilitaryTime()문자열이 HH:MM 형식의 유효한 군사 시간 표현인지 확인합니다.
@IsTimeZone()문자열이 유효한 IANA 시간대를 나타내는지 확인합니다.
@IsHash(algorithm: string)문자열이 해시인지 확인합니다. 다음 유형이 지원됩니다 : md4, md5, sha1, sha256, sha384, sha512, ripemd128, ripemd160, tiger128, tiger160, tiger192, crc32.crc32b
@IsMimeType()문자열이 유효한 MIME 유형 형식 과 일치하는지 확인합니다.
@IsSemVer()문자열이 SemVer(의미적 버전 관리 사양)인지 확인합니다.
@IsISSN(options?: IsISSNOptions)문자열이 ISSN인지 확인합니다.
@IsISRC()문자열이 ISRC 인지 확인합니다 .
@IsRFC3339()문자열이 유효한 RFC 3339 날짜인지 확인합니다.
@IsStrongPassword(options?: IsStrongPasswordOptions)문자열이 강력한 비밀번호인지 확인합니다.
배열 검증 데코레이터
@ArrayContains(values: any[])배열에 지정된 값 배열의 모든 값이 포함되어 있는지 확인합니다.
@ArrayNotContains(values: any[])배열에 지정된 값이 포함되어 있지 않은지 확인합니다.
@ArrayNotEmpty()주어진 배열이 비어 있지 않은지 확인합니다.
@ArrayMinSize(min: number)배열의 길이가 지정된 숫자보다 크거나 같은지 확인합니다.
@ArrayMaxSize(max: number)배열의 길이가 지정된 숫자보다 작거나 같은지 확인합니다.
@ArrayUnique(identifier?: (o) => any)모든 배열의 값이 고유한지 확인합니다. 객체 비교는 참조 기반입니다. 비교에 사용할 반환 값을 선택적 함수로 지정할 수 있습니다.
객체 검증 데코레이터
@IsInstance(value: any)속성이 전달된 값의 인스턴스인지 확인합니다.
기타 데코레이터
@Allow()다른 제약 조건이 지정되지 않은 경우 속성이 제거되는 것을 방지합니다.