Node/NestJS

    NestJS - MongoDB 연결하기 & 환경 변수 설정

    이번 포스팅에서는 NestJS 프로젝트에 MongoDB를 연결하고 환경변수를 설정하는 방법에 대해 정리해보고자 한다. 데이터베이스는 MongoDB Atlas를 사용하였고 Mongoose 패키지를 사용하였다. MongoDB 연결 & 환경 변수 설정 Schema 설계 Virtual field 설정 1. MongoDB 연결 & 환경 변수 설정 우선 다음과 같이 mongoose 패키지를 설치해주도록 하자. $ npm i --save @nestjs/mongoose mongoose 설치가 완료되었다면 AppModule에서 다음과 같이 MongooseModule을 import 해준다. // app.module.ts 파일 import { Module } from '@nestjs/common'; import..

    NestJS - Pipes & Interceptors

    NestJS 프레임워크 사용을 위한 기본 개념에 대해 간략하게 정리해 보고자 한다. 본 포스팅에서는 Pipe 패턴과 Interceptors 에 대해 알아보도록 하겠다. Pipes Interceptors 1. Pipes 파이프(Pipe)는 클라이언트 요청에서 들어오는 데이터에 대해 유효성 검사 및 변환을 수행하여 서버가 원하는 데이터를 얻을 수 있도록 도와주는 클래스이다. 파이프에는 다음과 같은 두가지 일반적인 사용 사례가 있다. 변환(transformation) : 입력 데이터를 원하는 형식으로 변환 (ex. 문자열에서 정수로) 유효성 검사(validation) : 입력 데이터를 평가하고 유효하면 변경하지 않고 전달한다. 그렇지 않으면 데이터가 올바르지 않을 때 예외를 발생시킨다. 다음은 N..

    NestJS - Exception filter 설정

    NestJS 프레임워크 사용을 위한 기본 개념에 대해 간략하게 정리해 보고자 한다. 본 포스팅에서는 exception filter를 사용하는 방법에 대해 알아보도록 하겠다. 예외 처리 Exception filter 1. 예외 처리 예외 처리(exception handling)란 프로그래머가 예기치 못한 예외의 발생에 미리 대처하는 코드를 작성하는 것으로 이를 통해 실행 중인 프로그램의 비정상적인 종료를 막고 프로그램의 상태를 정상 상태로 유지하는 것이 목적이다. 보통 Node.js에서 에러를 처리할 때는 throw new Error( ) 와 같은 방식을 통해 에러를 발생시켜 예외 처리를 진행하게 된다. NestJS에서는 HttpException( ) 이라는 인터페이스를 제공해주기 때문에 ht..

    NestJS - LoggerMiddleware 설정

    NestJS 프레임워크 사용을 위한 기본 개념에 대해 간략하게 정리해 보고자 한다. 본 포스팅에서는 middleware에 대해 알아보고 LoggerMiddle를 설정해 보도록 하겠다. Middleware LoggerMiddleware 설정 1. Middleware NestJS 미들웨어는 기본적으로 Express 미들웨어와 동일하다. 미들웨어가 어떠한 방식으로 동작하는지에 대해서는 이전 포스팅에서 작성해 놓은 내용이 있으니 참고하면 좋을 듯 하다. 2022.02.10 - [Node/Express] - Node.js - express (8) 라우터와 미들웨어 (router & middleware) Node.js - express (8) 라우터와 미들웨어 (router & middleware) 이..

    NestJS - 캡슐화(Encapsulation) & Modules

    NestJS 프레임워크 사용을 위한 기본 개념에 대해 간략하게 정리해 보고자 한다. 본 포스팅에서는 NestJS에서의 Modules 와 캡슐화(Encapsulation)에 대해 알아보도록 하겠다. 캡슐화 Modules 1. 캡슐화 (Encapsulation) 캡슐화(encapsulation)는 객체(object)의 속성과 행위(method)를 하나로 묶고 구현된 일부를 감추어 은닉하는 것을 일컫는다. 다시 말해, 클래스의 내부 변수와 메소드를 하나로 패키징하는 특징이다. 캡슐화와 비슷한 개념으로 정보 은닉(information hiding)이라는 개념이 있는데, 이는 객체의 내부 구현을 숨김으로써 객체가 반드시 정해진 메소드를 통해 상호작용 하도록 유도한다. 이 두 개념은 객체의 응집도와 독..