Nest.js 정리 (기본 구조 및 typeOrm 기초와 설정)

JEON.HYEONG.JUN·2025년 2월 11일
0


nest g resource 명령어로 movie폴더와 같은 리소스를 만들 수 있다.

@module

typeOrm과 컨트롤러와 비즈니스 로직등을 하나의 모듈로 묶어서 관리할 수 있다. provides에서 비즈니스 로직을 의존성 주입 컨테이너(DI Container)에 등록하여 컨트롤러에서 사용가능하다. 사용방법을 익혀놓으면 될 듯하다.


프로젝트의 메인 모듈이 되는 app.module.ts 인데 joi를 사용해서 환경변수를 validation하였고,
참고로 환경변수 셋팅시에 fotRoot대신 forRootAsync를 통해 비동기적으로 환경변수를 셋팅할 수 있다고 한다.
GPT는 외부 API 연동 시에 유용하다고 하는데 강의를 좀 더 봐야할 듯 하다.

참고로 nest.js는 ioc 컨테이너를 통해 인스턴스 생성과 injection을 자동으로 해준다는데 이론적인 내용이라 필요할 때 다시 이해해봐야할 듯.

Dto

post나 patch 요청 시 request body의 타입을 지정하고 class-validator를 통해 유효성검사 실행. 예를 들어 title 필드 같은 경우 바디에 필드가 존재할 때는 반드시 값이 있어야 하지만, 존재하지 않으면 아예 검사에서 제외된다.

custom validator를 만들 수도 있고, class transformer를 통해 expose, exclude, 응답값 변환도 가능하니 필요할 때 코드 참고하면 될 듯 하다.
필요할 때 찾아쓰자.

Entity

TypeOrm을 쓰기 위해 설정한다. id를 자동으로 증가시키며 유니크한 primary_key를 생성해주고, 컬럼생성, 생성시간, 업데이트 시간 등등을 자동으로 채워준다. 이것도 필요할 떄 찾아쓰면 될 듯.

Service

repository를 사용해서 지정한 entity에 대한 crud쿼리를 날릴 수 있다. SQL안써도 된다. inject 필요한 부분들 코드확인해서 꼭 해당기능들 주입해주자.


id값으로 특정 영화가져오는 코드인데 repository 메서드들은 필요할 때 찾아보자.
참고로 NotFoundException은 @nestjs/common에서 제공하는 기능인데 이거 안쓰면 id와 일치하는 영화 없어도 200 ok 떨어진다. 에러처리를 위해 꼭 필요한 곳에 사용해줘야 한다.


강의 꽤 본 것 같은데 정리해보니 많지않다.
포스트맨과 postgres 사용해 보니 신기하고 api 어떻게 만드는지 감이 조금씩 오는 것 같다.

profile
기록을 위한 블로그

0개의 댓글