import { ApiProperty } from '@nestjs/swagger';
import { UserGender, UserType } from '../../../commons/enums';
import { SignUpCommand } from '../../../domains/ports/in/command/user.command';

export class SignUpRequest extends SignUpCommand {
  /**
   * 유저 가입 이메일
   * @example testUser@livey.kr
   */
  @ApiProperty()
  userEmail: string;

  /**
   * @example testPW
   */
  @ApiProperty()
  userPW: string;

  /**
   * @example tester
   */
  @ApiProperty()
  userName: string;

  /**
   *
   */
  userGender: UserGender;

  userType: UserType;

  /**
   * @example 010-1234-5678
   */
  @ApiProperty()
  userPhoneNum: string;

  
/**
* 이메일 유효성 검사 API 추가 예시 
*/
@IsEmail() // <- 여기에 이메일 유효성을 확인하는 데코레이터를 추가합니다.
@ApiProperty({
    example: '테스트용 이메일',
    description: '유저 가입 이메일',
})
userEmail:string;
  

  
/**
* 여기까지 예시입니다. 나머지 코드는 그대로 사용하시면 됩니다.
*/

}

대충 위와 같이 유저 리퀘스트 DTO에 이메일 유효성 검사 API를 추가했고..

 

개발을 할 때 간과한 것이 있었다. 상대 경로라는 것이다.

상대 경로는 현재 파일의 위치를 기준으로 연결하려는 파일의 상대적인 경로로 나타낸 것을 의미한다. 상대 경로는 주소나 프로젝트 디렉토리 위치가 바뀌어도 내부 구조만 그대로라면 수정없이 그대로 사용할 수 있다는 장점을 가지고 있다. 그러나 자기 자신이 기준이기 때문에 자기 자신의 위치가 바뀌는 것에 취약하다는 단점이 있다(이거 때문에 컨트롤러 통합할때 애먹었다.. ㅂㄷㅂㄷ)
상대 경로는 보통 다음과 같이 명시한 것들을 의미한다.

./src/compnents/Counter.js
../../img/logo.jpg

기호의 의미는,

/ root
./ 현재 위치
../ 상위 경로

/만 사용되면 root, 즉 가장 토대가 되는 경로가 선택된다.
./는 현재 위치를 나타낸다. 현재 위치 ./는 보통 생략.
../는 상위 경로를 나타낸다. 상위 경로는 현재 폴더가 속한 폴더를 가리킨다.

이걸 몰라서,

import { User } from './src/entities/User.entity';
import { User } from './entities/User.entity';
import { User } from '../entities/User.entity';
import { User } from '../../entities/User.entity';
import { User } from '../../domains/entities/User.entity';

장장 5번의 삽질을 거쳐서야 드디어 오류가 멈췄다.. 후 ㅂㄷㅂㄷ!!!

여기서 끝이 아니다... 삽질기는 계속된다 ㅋㅋ

+ Recent posts