본문 바로가기
NestJs

[NestJs] TypeORM 설치 및 설정하기

by teamnova 2024. 3. 27.

안녕하세요. 오늘은 지난 시간에 이어 데이터를 실제 데이터 베이스에 저장을 해볼 겁니다. 

데이터베이스는 Mysql을 이용하여 실습할 예정이니 미리 mysql을 설치해주시길 바랍니다.

 

먼저 설치부터 해볼게요. 아래 명령어를 입력해주세요.

npm install @nestjs/typeorm typeorm mysql2

그리고 저희는 환경 변수를 사용해서 설정을 할 건데 미리 설치해야 될게 있습니다.

npm install @nestjs/config cross-env dotenv

모두 설치가 완료되었다면 root 경로에 .env파일을 생성해주세요.

DB_HOST = 'DB 호스트'
DB_PORT = 3306
DB_USERNAME = 'DB 유저 이름'
DB_PASSWD = 'DB 비밀번호'
DB_DATABASE = 'DB 이름'

위 칸 모두 채워주세요.

그리고 matin.ts에서 환경 변수를 사용할 수 있게 설정할 겁니다.

import { NestFactory } from '@nestjs/core';
import { AppModule } from './app.module';
import * as dotenv from 'dotenv';

async function bootstrap() {
  dotenv.config();
  const app = await NestFactory.create(AppModule);
  await app.listen(3000);
}
bootstrap();

그리고 나서 app.module.ts 파일에 typeorm을 설정하고 참조할게요.

import { Module } from '@nestjs/common';
import { BoardModule } from './board/board.module';
import { TypeOrmModule } from '@nestjs/typeorm';
import { ConfigModule } from '@nestjs/config';


@Module({
  imports: [ 
    BoardModule,
    ConfigModule.forRoot({
      isGlobal: true,
      envFilePath: '.env',
    }),
    TypeOrmModule.forRoot({
      type: 'mysql',
      host: process.env.DB_HOST,
      port: +process.env.DB_PORT,
      username: process.env.DB_USERNAME,
      password: process.env.DB_PASSWD,
      database: process.env.DB_DATABASE,
      entities: [__dirname + '/**/*.entity.{js,ts}'],
      synchronize: true
  })
  ],
  controllers: [],
  providers: [],
})
export class AppModule {}

그리고 npm run start를 통해 프로젝트를 실행할 때 오류가 없다면 연결 성공입니다.