- Published on
NestJS에서 TypeORM과 Nest/Config를 사용하여 MySQL 연동하기
- Authors
- Name
- 황도연
이 포스팅에서는 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
// ... 기타 필드들
}