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
패키지를 사용하면 데이터베이스 스키마 변경을 쉽고 안전하게 관리할 수 있습니다.