profile
삽질 기록..
post-thumbnail

[NestJS] DTO Validator

나는 이 Request DTO의 status 의 값이 'Approved, Rejected, Delayed' 이 셋 중 하나만 입력되게 하고 싶다. 삽질 employee.service.ts 처음에는 Service 단에서 throw new BadRequestException으로 잡았다. 근데 이렇게 하면 controller 를 넘어서 service 의 맨 마지막 문장까지 와서야 잡히게 된다. 내가 원하는건 request 에 내가 원하는 값이 들어오지 않으면 튕기는 것이다. 그래서 여태 써오던 class-validator 에서 request 를 잡아줄 데코레이터가 있는지 검색해서 @IsIn 을 찾았다. 근데 적용이 안된다. 뭐가 문제일지 생각을 해보다가, 설마 다른 class-validator 도 적용이 안되는건가 하고 class-validator 적용하는 방법을 찾아봤는데, 유효성 검사를 전역으로 적용하려면 main.ts 의 코드에 추가해줄 것이 있었다.

2023년 3월 15일
·
0개의 댓글
·
post-thumbnail

[NestJS] 타입 지정하기

에러코드 overloaded function에서 지정한 매개변수들의 타입 형식과 실제 전달한 인자의 타입 형식이 일치하지 않으면 뜨는 에러이다. Entity 의 purchaseUser, sellUserName 의 타입은 NameUserEntity 인데, DTO 의 타입은 string 이었기 때문에 생긴 오류!!!! 타입 실수하지말자!!!!

2023년 3월 13일
·
0개의 댓글
·
post-thumbnail

[NestJS] TypeORM + postgreSQL

Relationship One To One Many To One Many To Many 1. One To One > We also added @JoinColumn which is required and must be set only on one side of the relation. The side you set @JoinColumn on, that side's table will contain a "relation id" and foreign keys to target entity table. 어느 쪽을 통해서 다른 쪽의 정보를 받아올 것인지 생각해보고, 1:1 관계의 주인쪽에 @JoinColumn 을 붙여준다. 삽질 1. User 가 회원가입할 때, Brand 와 Join 되어서 나중에 user.brand.branId 이런식으로 정보를 불러올 수 있게 만들기 처음에는 그저 `brandId

2023년 3월 9일
·
0개의 댓글
·
post-thumbnail

[NestJS] Configuration

설치 The @nestjs/config package internally uses dotenv. 먼저 AppModule 에 이런식으로 작성한다. forRoot() 안의 인자인 ConfigModuleOptions 에는 다양한 옵션이 있다. 많이 쓰는 옵션만 알아보자. : env 파일의 경로를 추적하기 위해 사용한다. : 이런 식으로 여러 파일을 불러올 수도 있다. : env 파일을 사용하고 싶지 않을 때 사용한다. 다른 곳에서도 환경 변수를 불러올 수 있도록 전역으로 설정하기 위해 사용한다. 사용방법 .env.develpment 파일에 여러 환경변수를 적어놓는다. app.module.ts package.json env-cmd 는 각 환경에 맞게 자동으로 환경변수를 불러와 적용할 수 있도록 도와주는 패키지다. 이런식으로 사용한다.

2023년 3월 8일
·
0개의 댓글
·
post-thumbnail

[NestJS] Create in CRUD

TypeORM 의 create() 메서드를 이용해서 튜플을 생성했다. 참고로 repository.create() 메서드는 단순히 repository entity 의 객체를 생성하는 것이므로 async await 으로 처리할 필요는 없다. 이렇게 만들어진 데이터를 저장하기 위해서 this.userRepository.save(newUser) 을 사용하는 것이다. 여기는 DB에 접근하는 것이므로 async await 으로 비동기를 제어해줘야 한다. 회원가입, 로그인, 로그아웃과 UseGuards(JwtAuthGuard) 를 이용해 accessToken 확인하는 로직까지 완성했고, 이제 User(1) : Board(N) 관계를 가지고 로그인한 유저가 게시글을 등록하는 로직을 만들어보자. 삽질 1. User Entity Board Entity 로그인한 유저가 글을 등록하게 만들고 싶기 때문에 앞서 만든 `@UseGuards(JwtA

2023년 3월 8일
·
0개의 댓글
·
post-thumbnail

[NestJS] 회원가입, 로그인

app.module.ts 로그인을 할때 유저가 로그인할 때

2023년 3월 8일
·
0개의 댓글
·
post-thumbnail

[NestJS] Swagger

dependency 설치 main.ts

2023년 3월 8일
·
0개의 댓글
·
post-thumbnail

[NestJS] Logger

일반적으로 production 환경에서는 debug 로그를 찍지 않는다. 그래서 보통 다음과 같이 실행 환경에 따라 로그 레벨을 지정한다. CustomLogger : @nestjs/common 패키지의 LoggerService 인터페이스를 구현하거나, ConsoleLogger 를 상속받아서 사용한다. 보통 이 방식을 채택한다.

2023년 3월 8일
·
0개의 댓글
·
post-thumbnail

[NestJS] @Module

imports : 이 모듈에서 사용하기 위한 프로바이더를 가지고 있는 다른 모듈을 가져온다. TypeOrmModule이라면 Entity를 입력하면 되는 것 같다. providers : 이 모듈에서 사용하기 위한 @Injectable() 이 붙은 Service 를 작성한다. 삽질 1. 오류 메세지 현재 상황 BoardModule 에 문제가 생겼다는 건 알겠다. 그래서 providers 에 @Injectable() 이 붙은 Service 를 가져다 붙였지만 해결되지 않았다. 곰곰히 생각해보니 현재 BoardModule 안에서 사용되는 Service 는 BoardService 와 JwtAuthGuard 이렇게 두개 뿐이다. 그래서 나머지를 다 지웠더니 정상 동작했다. 삽질 2. 오류 메세지를 보면 Nest 가 EmployeeService 의 의존성을 해결하지 못하고, index 0번쨰의 Employ

2023년 3월 7일
·
0개의 댓글
·