설명
클래스 유효성 검사기
설치
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=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() | |
@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() | |
@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() | |
@IsSemVer() | 문자열이 SemVer(의미적 버전 관리 사양)인지 확인합니다. |
@IsISSN(options?: IsISSNOptions) | 문자열이 ISSN인지 확인합니다. |
@IsISRC() | |
@IsRFC3339() | |
@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
복사