NestJS TypeORM Migration 셋팅하기 -1

 이번에는 TypeORM에서 migration을 셋팅하고 이후 글에서는 동작을 하도록 하겠습니다.


진행을 위해서는 NestJS가 설치 되어 있어야 합니다. 아래 링크를 참고해 주시기 바랍니다.

링크 : nest js - install & Create Project from Linux or Ubuntu


해당 글에서는 Postgres을 사용합니다. 다만 진행의 편리성을 위해 Docker Container를 이용하여 사용합니다. 아래 링크를 참고해 주시기 바랍니다.

링크 : Docker-Compose yaml파일을 이용하여 PostgreSQL를 Local로 구축하기

아래에 gitHub링크가 있는데 Clone받으셔서 사용하셔도 됩니다.

1. 프로젝트를 생성합니다.


$ nest new typeorm_migration_example





typeorm을 사용하기 위해서 npm 모듈을 설치합니다.

$npm i @nestjs/typeorm typeorm pg



"@nestjs/typeorm": "^9.0.1"
"pg": "^8.10.0"
"typeorm": "^0.3.14"

2. 이제 package.json파일에서 script에 migration내용을 추가해야 합니다.


"scripts": {
"build": "nest build",
"format": "prettier --write \"src/**/*.ts\" \"test/**/*.ts\"",
"start": "nest start",
"start:dev": "nest start --watch",
"start:debug": "nest start --debug --watch",
"start:prod": "node dist/main",
"lint": "eslint \"{src,apps,libs,test}/**/*.ts\" --fix",
"test": "jest",
"test:watch": "jest --watch",
"test:cov": "jest --coverage",
"test:debug": "node --inspect-brk -r tsconfig-paths/register -r ts-node/register node_modules/.bin/jest --runInBand",
"test:e2e": "jest --config ./test/jest-e2e.json",
"typeorm": "npm run build && npx typeorm -d dist/db/data-source.js",
"migration:generate": "npm run typeorm -- migration:generate",
"migration:run": "npm run typeorm -- migration:run",
"migration:revert": "npm run typeorm -- migration:revert"
}


3개가 추가 됬는데 migration:generate, migration:run 그리고 migration:revert가 추가됬습니다.


migration:generate => typeorm에서 migration파일을 생성합니다. migration:run을 진행하기전 파일이 있어야 합니다.

migration:run => typeorm에서 DB에 migration을 진행합니다. 

migration:revert => migration:run을 진행했지만 어떻한 경우로 다시 DB를 원복할때 사용합니다.


3. Root 경로에 db폴더 및 data source생성

// db/data-source.ts
import { DataSource, DataSourceOptions } from 'typeorm';

export const dataSourceOptions: DataSourceOptions = {
type: 'postgres',
host: 'localhost',
port: 5433,
username: 'postgres',
password: 'password',
database: 'postgres',
entities: ['dist/**/*.entity.js'],
migrations: ['dist/db/migrations/*.js'],
};

const dataSource = new DataSource(dataSourceOptions);
export default dataSource;


Root경로는 typeorm_migration_example내부 경로 입니다.


4. app.module.ts파일을 아래와 같이 수정합니다.

// src/app.module.ts
import { Module } from '@nestjs/common';
import { TypeOrmModule } from '@nestjs/typeorm';
import { dataSourceOptions } from 'db/data-source';
import { AppController } from './app.controller';
import { AppService } from './app.service';

@Module({
imports: [TypeOrmModule.forRoot(dataSourceOptions)],
controllers: [AppController],
providers: [AppService],
})
export class AppModule {}


이제 TypeORM셋팅은 마무리 됬습니다. 다음 글에서는 DB를 생성하고 Table을 migration하도록 하겠습니다.


gitHub Link : https://github.com/Alex-Choi0/nestjs_typeorm_migration_example.git


다음글 : NestJS TypeORM Migration DB 생성 및 첫 Migration진행 -2

댓글

이 블로그의 인기 게시물

Lesson 12_1 프로퍼티 노드(Property Node)

DAQ로 전압 측정하기-2

Lesson 12_2 참조를 이용한 프로퍼티노드(Property Node)