NestJs

[NestJs] TypeORM 설치 및 설정하기

teamnova 2024. 3. 27. 12:00
728x90

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

데이터베이스는 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를 통해 프로젝트를 실행할 때 오류가 없다면 연결 성공입니다.