[Nest.js + TypeORM] 개발 환경 세팅하기

지나가다·2023년 3월 26일
0

Nest.js + TypeORM 개발 환경 구축하기 ⚙️
간단하게 nest.js와 typeORM 개념을 알아보면서 개발 환경 세팅을 해볼게요!


Nest.js

Nest(NestJS)는 효율적이고 확장 가능한 Node.js 서버측 (server-side application)을 구축하기 위한 프레임워크이다. Typescript를 지원하며 Typescript 기반으로 프로젝트를 진행할 수 있다. 또한 OOP(객체 지향 프로그래밍), FP(함수형 프로그래밍), FRP(기능적 반응형 프로그래밍) 지원한다.

내부적으로 Nest는 Express(기본값)와 같은 강력한 HTTP 서버 프레임워크를 사용하며, 선택적으로 Fastify도 사용하도록 구성할 수 있다!


Setup ⚙️

아래 명령어를 실행 해주면 Nest CLI로 프로젝트를 스캐폴딩 해준다.

npx @nestjs/cli new project-name

새 프로젝트 디렉토리가 생성되고 초기 Nest 파일 및 지원 모듈로 디렉토리가 채워져 프로젝트 기본 구조가 생성된다.

app.controller.ts : 라우트의 컨트롤러
app.controller.spec.ts: 컨트롤러 단위 테스트 코드
app.module.ts : 앱의 루트 모듈
app.service.ts: 여러 로직을 담는 파일
main.ts : 앱의 시작 파일

main.ts

  • create 메소드는 INestApplication interface에서 application object를 반환한다.
  • 내장 http listener 코드를 활용하여 application object가 inbound http request를 받을 수 있도록 한다.

TypeORM

TypeORM은 NodeJS, Browser, Cordova, PhoneGap, Ionic, React Native, NativeScript, Expo, Electron 플랫폼에서 실행할 수 있으며 TypeScript 및 JavaScript(ES5, ES6, ES7, ES8)와 함께 사용할 수 있는 ORM이다.

TypeORM은 현재 존재하는 다른 모든 JavaScript ORM과 달리 액티브 레코드 및 데이터 매퍼 패턴을 모두 지원하므로, 느슨하게 결합되고 확장 가능하며 유지 관리가 용이한 고품질 애플리케이션을 가장 생산적인 방식으로 작성할 수 있다.


Setup ⚙️

아래 명령어를 실행하여 필요한 모든 종속성을 설치한다.

npm install --save typeorm mysql2

명령어 실행 후 app.module.ts에서 TypeOrmModule을 import한다.

import { Module } from '@nestjs/common';
import { TypeOrmModule } from '@nestjs/typeorm';

@Module({
  imports: [
    TypeOrmModule.forRoot({
      type: 'mysql',
      host: 'localhost',
      port: 3306,
      username: 'root',
      password: 'root',
      database: 'test',
      entities: [],
      synchronize: true,
    }),
  ],
})

export class AppModule {}

프로덕션 환경에서 synchronize: true를 설정하면 개발에 따라 데이터베이스를 업데이트 하기 때문에 프로덕션 데이터가 손실될 수 있으므로 사용하면 안된다.

추가 옵션 설정

Properties Description
retryAttempts 데이터베이스 연결 시도 횟수 (default: 10)
retryAttempts 재연결 시도 간 딜레이(대기 시간) (default: 3000ms)
autoLoadEntities True로 선언되면 엔티티들이 자동으로 로드 됩니다. (default: false)

더 많은 설정 옵션은 공식문서를 통해 확인할 수 있다.


참고 자료

profile
그 꼬라지로 언제까지 살 거냐고

0개의 댓글