부트캠프 PM일을 병행하면서 개발공부를 하고 있다.일을 시작한지 한 달 남짓이 지나, 업무에 적응하면서 슬슬 개발 공부에 탄력을 붙이는 중이다.OOP, Nest, 알고리즘/자료구조 등 다양한 공부 키워드가 있었지만, Nest를 첫 공부 대상으로 잡았다.=> 이유는 간
기본적으로 nest는 기능별로 moduel = controller + provider(serivce)의 구조로 구성되어 있다.이렇게 구성된 이유는 기본적으로 nest는 모든 것이 모듈로 구성되어 있기 때문이다.이를 통해, 각 기능별, 기능 안의 세부 구성 간에 역할과
nest는 모든 것이 '모듈'로 정의되어 있기 때문에, 생성한 미들웨어는 다음과 같은 방식으로 app에 적용시킨다.
nest에서 예외처리를 위해 제공되는 클래스이다.HttpException을 이용해 Filter를 생성하면, 예외처리에 대한 코드 재사용성을 늘릴 수 있다.(중복되거나 반복되는 예외처리 작성을 크게 줄일 수 있다.)response.status() \~~ 이하 내용을 오
관점지향 프로그래밍으로 횡단 관심사의 분리를 통해 코드의 모듈성을 증가시킴으로써, 코드의 역할/책임의 분리, 가독성과 그에 따른 생산성 향상을 지향하는 프로그래밍 패러다임이다.nest의 요청 처리 로직 상에서 Interceptor 는 이런 AOP 패턴의 가치에 따른
@nestjs/mongoosemongooseapp.module에서 mongooseModule을 import한다.@nestjs/configexpress에서는 'dotenv' 패키지를 이용했으나, nest에서는 이를 이용한다.전역 환경에 .env를 생성한다.(src가 아니
Nest에서 mongoDB의 스키마 설게는 다음과 같이 Class와 decoration 패턴을 이용한다.Prop에는 각 데이터의 옵션을 설정한다.Option에는 생성된 스키마와 관련된 옵션을 넣는다.Class로 생성된 인스턴스에 삽입되는 데이터의 validation을
Data Transfer Object계층 간 데이터 교환 시 규격을 나타내는 객체를 의미한다.주로 Client <-> Server, Server 내 Controller - Service 등 계층 간 데이터 교환 시 Validation 목적으로 쓰인다.주로 기능 폴
Client 단에 DB query문에 따른 결과를 있는 그대로 response로 전달할 경우, 공개가 민감한 정보까지 함께 전달될 수 있기 때문이다.비즈니스 로직 단에서 response로 보낼 데이터들을 일일이 변수에 할당할 수 있으나, 이는 하드코딩으로, 재사용성이
"@nestjs/swagger": "^6.0.5"자세한 준비물은 공식문서 참고하면 된다.express를 사용할 때에는 swagger-autogen을 이용해서 API 명세서 작업을 했었다. 편리하긴 했지만, 수작업으로 하드코딩해야하는 사항들이 많아, 그렇게 꼼꼼하게 sw
express를 사용하면서는, model - controller - service 패턴에 따른 작업을 주로 하였다. 각 계층의 역할은 다음과 같다.model = DB 연결과 관련된 내용controller = request와 response의 처리service = 비즈니
개발 과정에서 A모듈 <-> B모듈이 각각 서로를 참조해야하는 사례가 생긴다.이 때, nest에서는 순환 참조를 위해서는 각 모듈에서 다음과 같이 코드를 작성해야한다.
passport와 jwt를 이용한다는 전제하에, 다음과 같은 준비물이 필요하다.JWT는 Json-web-token의 약자이다. 즉, json 포멧을 사용하여 사용자 인증과 관련된 데이터를 담고 있는 웹 기반 토큰이다.구조는 Header, payload, signatur
Nest에서 client에서 들어온 request가 response로 반환될 때까지의 flow는 다음과 같다.request -> middleware -> guard(인증 검토) -> interceptor -> controller -> httpexception filte
@types/multercommon 폴더의 utiles라는 폴더 안에 설정하는 것이 가독성이 좋다.파일 구성을 요약하자면, 클라이언트에게서 받은 파일을 저장할 폴더의 이름과 위치, 파일의 이름을 일괄적으로 정하는 option을 생성하는 것이다.multerOption은
기존에는 mogoose 버전은 6 이상, nestjs/mongoose는 9이상 버전이었다.mongoDB에서 관계 설정과 관련해서는 populate method를 이용하는데, 이와 관련해서 mongoose 버전이 6 이상인 경우, nestjs/mongoose 버전 8 이
라이브러리에 대한 설명을 구체적으로 모두 다 작성하는데는 한계가 있다. 필자 또한 이 블로그를 typeORM을 사용하면서 참고하기 위한 목적으로 쓰지만, 기본적으로 공식문서를 참고하는 것이 가장 정확하다. 이에, 구체적인 내용은 공식문서를 참고하는 것이 좋으며, 필자도