[NestJS] TypeORM을 사용하여 마이그레이션 | path alias 절대경로

sm·2023년 7월 12일
1

udemy

목록 보기
5/12
post-thumbnail
post-custom-banner

마이그레이션?

마이그레이션은 데이터베이스 스키마의 변경을 관리하고 적용하는 과정이다. NestJS에서는 주로 TypeORM을 사용하여 데이터베이스 마이그레이션을 처리한다고 한다. 데이터베이스 스키마를 버전 관리하고 변경 사항을 추적할 수 있게 되는 것!

  • 데이터베이스 스키마: 데이터베이스에서 테이블, 열, 제약 조건 등의 구조를 정의한 것
  • 마이그레이션 파일: 마이그레이션 작업을 수행하는 TypeScript 또는 JavaScript 파일. 이 파일에는 스키마 변경에 대한 명령어와 로직이 포함.
  • 마이그레이션 작업: 데이터베이스 스키마를 변경하거나 업데이트하는 작업. 예를 들어, 새로운 테이블 생성, 열 추가, 제약 조건 변경 등

마이그레이션 하는 이유

변경된 요구 사항에 대응하고 데이터의 무결성을 보장하기 위해! 그리고 버전 관리와 다중 개발자 간의 협업을 지원하여 개발 프로세스를 향상시키고 배포 관리를 간편하게 하기 위해.

  1. 마이그레이션은 데이터베이스 스키마 변경을 추적하여 언제, 어떤 변경이 가해졌는지 기록하므로, 이를 통해 변경 내역을 추적하고 문제가 발생할 경우 이전 상태로 롤백할 수 있다!
  2. 마이그레이션은 변경 사항을 정의하고 적용하는 과정을 통해 다중 개발자 간의 협업을 용이하게 한다고.
  3. 배포 및 롤백 관리: 마이그레이션은 애플리케이션 배포 시 데이터베이스 스키마를 업데이트하는 데 사용된다. 변경 사항이 필요한 경우 마이그레이션을 실행하여 스키마를 업데이트하고, 롤백이 필요한 경우 이전 상태로 복구할 수 있다!

마이그레이션 설정

package.json 파일

스크립트를 정의하는 데 사용되며, 여기서 마이그레이션 실행을 위한 명령어를 정의한다.

   "typeorm": "ts-node -r tsconfig-paths/register ./node_modules/typeorm/cli.js -d src/ormdatasource.ts",
    "db:drop": "yarn typeorm schema:drop",
    "db:create": "yarn typeorm migration:generate",
    "db:migrate": "yarn typeorm migration:run"

참고) 절대경로

위의 typeorm에는 절대경로 설정을 위한 설정이 포함되어 있다! tsconfig-paths 패키지가 제공하는 레지스터(register)인 tsconfig-paths/register를 사용하여 경로 별칭을 인식하도록 설정한 것이다.

예시로 tsconfig.json를 이런 식으로 설정하면

{
  "compilerOptions": {
  	...
    "baseUrl": "./",
    "paths": {
     "@app/*": ["./src/*"]
    }
  }
}


절대 경로를 사용할 수 있을 것이다.


db:drop , db:create, db:migrate 로 명령어를 지정하면 더 간단하게 마이그레이션할 수 있다고 해서 그렇게 설정해주었고 실제로도 더 편한 것 같다.

"db:drop": "yarn typeorm schema:drop"
데이터베이스를 삭제하는 작업을 수행.
데이터베이스의 스키마를 삭제. 주로 개발 시나리오에서 데이터베이스를 초기화하거나 테스트용 데이터베이스를 제거하는 데 사용

"db:create": "yarn typeorm migration:generate"
마이그레이션 파일을 생성하여 데이터베이스를 생성하는 작업을 수행. 현재 데이터베이스 상태에서 마이그레이션 파일을 생성.
예) yarn db:create src/migrations/AddUsernameToUsers처럼 최근 버전에는 경로까지 정확히 입력해주어야 하는 것 같다.

"db:migrate": "yarn typeorm migration:run"
마이그레이션 파일을 실행하여 데이터베이스를 마이그레이션하는 작업을 수행. 마이그레이션 파일을 실행하여 데이터베이스의 스키마를 변경 또는 업데이트. 마이그레이션 파일에 정의된 대로 데이터베이스 스키마가 변경된다.


ormconfig.json 파일

데이터베이스 연결 설정과 마이그레이션에 대한 구성을 정의하는 파일. 이 파일에서 데이터베이스 연결 정보와 마이그레이션 설정을 지정.


const config: PostgresConnectionOptions = {
  type: 'postgres',
  host: 'localhost',
  port: 5432,
  username: 'mediumclone',
  password: '1234',
  database: 'mediumclone',
  entities: [TagEntity, UserEntity],
  synchronize: false,
  migrations: [__dirname + '/migrations/**/*{.ts,.js}'],
};

이렇게 그냥 migrations 옵션으로 마이그레이션 파일이 저장되는 디렉토리 경로를 지정해준다.

설정한 명령어를 터미널에 입력하면 이렇게 migrations 폴더에 마이그레이션 파일이 생기게 된다.


마이그레이션을 처음으로 배우고 실습한 후 쓰는 글이다.
배우고나니까 확실히 이게 왜 중요하고 왜 하는지 조금이나마 알 것 같다. 아직은 더 공부해야 하는 부분..

profile
📝 It's been waiting for you
post-custom-banner

0개의 댓글