자바스크립트 데이터베이스 마이그레이션 with NestJS

NestJS는 개발자들이 Node.js에서 확장 가능하고 모듈러한 웹 애플리케이션을 구축할 수 있는 프레임워크입니다. 이 프레임워크는 데이터베이스 마이그레이션을 관리하기 위한 통합 방법을 제공하여 개발자들이 데이터베이스 스키마의 변경을 쉽게 다룰 수 있습니다.

이번 글에서는 NestJS와 함께 자바스크립트 데이터베이스 마이그레이션을 어떻게 수행할 수 있는지 알아보겠습니다. 우리는 PostgreSQL 데이터베이스를 사용하고 typeorm 패키지를 이용하여 마이그레이션을 관리할 것입니다.

먼저, typeorm 패키지를 설치해야 합니다. 다음 명령어를 사용하여 설치할 수 있습니다:

npm install --save @nestjs/typeorm typeorm

typeorm 패키지를 설치했다면, NestJS에서 데이터베이스 연결을 설정해야 합니다. TypeOrmModule.forRoot() 메서드를 사용하여 app.module.ts 파일에서 데이터베이스 설정을 구성합니다:

@Module({
  imports: [
    TypeOrmModule.forRoot({
      type: 'postgres',
      host: 'localhost',
      port: 5432,
      username: 'your_username',
      password: 'your_password',
      database: 'your_database',
      entities: [__dirname + '/**/*.entity{.ts,.js}'],
      synchronize: true,
      migrations: [__dirname + '/migrations/*{.ts,.js}'],
      cli: {
        migrationsDir: 'src/migrations',
      },
    }),
  ],
})
export class AppModule {}

이제 마이그레이션을 생성할 준비가 되었습니다. 다음 명령어로 마이그레이션을 생성할 수 있습니다:

npx typeorm migration:generate -n MyMigration

위 명령어를 실행하면 src/migrations 디렉터리에 새로운 마이그레이션 파일이 생성됩니다. 파일 이름은 YYYYMMDDHHMMSS-MyMigration.ts 형식을 따릅니다.

마이그레이션 파일을 열어서 자신이 필요로 하는 데이터베이스 변경 작업을 구현합니다. 예를 들어, 새로운 테이블을 생성하거나 기존 테이블의 구조를 변경하는 작업을 수행할 수 있습니다.

import {MigrationInterface, QueryRunner} from "typeorm";

export class MyMigration1626252400000 implements MigrationInterface {
    public async up(queryRunner: QueryRunner): Promise<void> {
        await queryRunner.query(`
            CREATE TABLE users (
                id SERIAL PRIMARY KEY,
                name VARCHAR(255) NOT NULL,
                email VARCHAR(255) NOT NULL
            )
        `);
    }

    public async down(queryRunner: QueryRunner): Promise<void> {
        await queryRunner.query(`
            DROP TABLE users
        `);
    }
}

마이그레이션 파일을 작성했다면, 다음 명령어로 마이그레이션을 실행할 수 있습니다:

npx typeorm migration:run

위 명령어를 실행하면 up() 메서드가 호출되어 마이그레이션 작업이 데이터베이스에 적용됩니다. 마이그레이션을 롤백하려면 down() 메서드를 호출하는 명령어를 사용할 수 있습니다:

npx typeorm migration:revert

이렇게 자바스크립트 데이터베이스 마이그레이션을 NestJS 프로젝트에서 수행할 수 있습니다. NestJS와 typeorm 패키지를 사용하면 데이터베이스 스키마 변경을 쉽고 안전하게 관리할 수 있습니다.

#NestJS #database-migration