[NestJS] Class-Validator IsOptional

Asher Park·2023년 4월 26일
0
post-thumbnail

프로젝트를 진행하면서 회원의 정보를 수정하는 기능이있었다.

닉네임과 이메일을 수정할 수 있었고 수정된 데이터만 body에 담아 넘기고 싶었다.

// mypage.js
async function update() {
	let body = {}
    
    if (isNicknameChanged) body.nickname = nicknameInput.value;
  	if (isEmailChanged) body.email = emailInput.value;
  
  	try {
      	await axios.patch(`/api/users`, body);
    } catch (err) {
      	// error
    }
}

body에 담아 넘어오는 회원의 정보를 UpdateUserDto로 유효성 검사를 하고있었다.

import { IsEmail, Matches } from 'class-validator';

export class UpdateUserDto {
    @Matches(/^[\u1100-\u11FF\u3130-\u318F\uAC00-\uD7AFa-z\d]{2,15}$/, {
        message: 'nickname',
    })
    nickname?: string;

    @IsEmail({}, { message: 'email' })
    email?: string;
}

하지만 닉네임과 이메일 두 속성 중 하나라도 없다면 에러를 반환한다.

따라서, 두 속성 중 하나가 존재하지 않아도 유효한 DTO로 인정하기 위해 @IsOptional() 데코레이터를 달아주었다.

profile
배움에는 끝이없다

0개의 댓글