Published on

NestJS에서 TypeORM과 Nest/Config를 사용하여 MySQL 연동하기

Authors
  • avatar
    Name
    황도연
    Twitter

이 포스팅에서는 NestJS 프레임워크에 TypeORM과 Nest/Config를 적용하여 MySQL 데이터베이스를 연동하는 방법을 안내합니다. TypeORM은 TypeScript와 잘 통합되는 ORM(Object-Relational Mapping)이며, Nest/Config는 애플리케이션 설정을 관리하는 데 유용합니다.

필요한 패키지 설치

먼저, NestJS 프로젝트에 필요한 패키지들을 설치합니다:

npm install --save @nestjs/typeorm typeorm mysql2
npm install --save @nestjs/config

여기서 mysql2는 MySQL 데이터베이스와의 통신을 위한 드라이버입니다.

TypeORM 및 Nest/Config 설정

1단계: TypeORM 설정

app.module.ts 파일을 열고 TypeORM 모듈을 설정합니다. 다음과 같이 TypeOrmModule.forRoot() 메소드를 사용하여 MySQL 데이터베이스와의 연결을 구성합니다:

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

@Module({
  imports: [
    TypeOrmModule.forRoot({
      type: 'mysql',
      host: process.env.DATABASE_HOST,
      port: parseInt(process.env.DATABASE_PORT, 10) || 3306,
      username: process.env.DATABASE_USERNAME,
      password: process.env.DATABASE_PASSWORD,
      database: process.env.DATABASE_NAME,
      entities: [],
      synchronize: true,
    }),
    // ... 기타 모듈들
  ],
  // ...
})
export class AppModule {}

2단계: Nest/Config 설정

환경 변수 관리를 위해 ConfigModule을 설정합니다. app.module.ts 파일에 ConfigModule을 추가합니다:

import { ConfigModule } from '@nestjs/config'

@Module({
  imports: [
    ConfigModule.forRoot({
      isGlobal: true, // 전역에서 사용하기 위해 설정
    }),
    // ... 기타 모듈들
  ],
  // ...
})
export class AppModule {}

3단계: 환경 변수 파일 생성

프로젝트 루트에 .env 파일을 생성하고 데이터베이스 접속 정보를 입력합니다:

DATABASE_HOST=localhost
DATABASE_PORT=3306
DATABASE_USERNAME=your_username
DATABASE_PASSWORD=your_password
DATABASE_NAME=your_database

엔티티(Entity) 생성

TypeORM에서는 데이터베이스 테이블을 엔티티(Entity) 클래스로 표현합니다. 예를 들어, User 엔티티를 생성해보겠습니다:

import { Entity, PrimaryGeneratedColumn, Column } from 'typeorm'

@Entity()
export class User {
  @PrimaryGeneratedColumn()
  id: number

  @Column()
  name: string

  // ... 기타 필드들
}