Search

class-validator

대분류
라이브러리
소분류
JS Library
설명
클래스 유효성 검사기
유형
주요 레퍼런스
https://github.com/typestack/class-validator#validation-decorators
프레임워크
Nest
언어
TS
최종 편집 일시
2024/10/31 03:30
생성 일시
2024/01/16 05:03
11 more properties

설명

클래스 유효성 검사기

설치

npm install class-validator --save
JavaScript
복사

사용법

유효성 검사 데코레이터

데코레이터
설명
일반적인 유효성 검사 데코레이터
@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()
@IsISO8601()의 별칭
@IsNumberString(options?: IsNumericOptions)
문자열이 숫자인지 확인합니다.
문자열 검증 데코레이터
@Contains(seed: string)
문자열에 시드가 포함되어 있는지 확인합니다.
@NotContains(seed: string)
문자열에 시드가 포함되어 있지 않은지 확인합니다.
@IsAlpha()
문자열에 문자(a-zA-Z)만 포함되어 있는지 확인합니다.
@IsAlphanumeric()
문자열에 문자와 숫자만 포함되어 있는지 확인합니다.
@IsDecimal(options?: IsDecimalOptions)
문자열이 유효한 십진수 값인지 확인합니다. 기본 IsDecimalOptions는 force_decimal=Falsedecimal_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?: IsISO8601Options)
문자열이 유효한 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)
문자열이 해시인지 확인합니다. 다음 유형이 지원됩니다 md4md5sha1sha256sha384sha512ripemd128ripemd160tiger128tiger160tiger192crc32.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()
다른 제약 조건이 지정되지 않은 경우 속성이 제거되는 것을 방지합니다.
each: true : 필드가 배열/일 때 각 항목에 대한 유효성 검사 수행 옵션
import { MinLength, MaxLength } from 'class-validator'; export class Post { @IsString({ each: true }) readonly genres: string[]; }
JavaScript
복사
@ValidateNested() : 객체에 중첩된 객체가 포함되어 있고 유효성 검사기가 유효성 검사도 수행하려 할 때 사용
import { ValidateNested } from 'class-validator'; export class Post { @ValidateNested() user: User; }
TypeScript
복사
JavaScript
복사

예시

import { validate, validateOrReject, Contains, IsInt, Length, IsEmail, IsFQDN, IsDate, Min, Max, } from 'class-validator'; export class Post { @Length(10, 20) title: string; @Contains('hello') text: string; @IsInt() @Min(0) @Max(10) rating: number; @IsEmail() email: string; @IsFQDN() site: string; @IsDate() createDate: Date; } let post = new Post(); post.title = 'Hello'; // should not pass post.text = 'this is a great post about hell world'; // should not pass post.rating = 11; // should not pass post.email = 'google.com'; // should not pass post.site = 'googlecom'; // should not pass validate(post).then(errors => { // errors is an array of validation errors if (errors.length > 0) { console.log('validation failed. errors: ', errors); } else { console.log('validation succeed'); } }); validateOrReject(post).catch(errors => { console.log('Promise rejected (validation failed). Errors: ', errors); }); // or async function validateOrRejectExample(input) { try { await validateOrReject(input); } catch (errors) { console.log('Caught promise rejection (validation failed). Errors: ', errors); } }
TypeScript
복사