NestJS Prisma ORM으로 DB구성하기(다른 env파일명)
nestjs에 prisma를 셋팅하여 해당 DB를 구성하도록 하겠습니다.
아래는 참고한 공식 문서 입니다.
NestJS 문서 : https://docs.nestjs.com/recipes/prisma
NestJS공식 문서에서는 .env파일로 prisma환경을 셋팅하는 방법이 나와있습니다. 하지만 위 블로그 글에서는 .env파일이 아닌 다른 ENV파일(.development.env)로 셋팅하는 방법에 대해서 작성하겠습니다.
NestJS 설치 및 셋팅은 아래 링크를 참고해 주시기 바랍니다.
링크 : nest js - install & Create Project from Linux or Ubuntu
프로젝트가 설치후 해당 경로로 들어가서 prisma를 설치한다(yarn)
1) yarn prisma 설치
- NestJS에서 prisma를 설치하기 위해서 모듈을 설치한다
$ yarn add prisma
이후 제대로 설치가 됬는지 확인하기 위해서 터미널에 'yarn prisma'를 입력하고 아래 사진과 같이 출력 되는지 확인한다.
![]() |
사진1) prisma 결과 화면 |
2) npx prisma 설치
- prisma의 환경변수(.env)와 폴더, 스키마를 생성한다.
$ npx prisma init
![]() |
사진2) prisma 셋팅 |
사진2와 같이 이제 프로젝트에 prisma폴더 및 스키마 그리고 .env파일을 'npx prisma init'을 이용하여 생성합니다. 폴더 구조는 아래 사진과 같습니다.
![]() |
사진3) prisma 폴더 및 .env파일 |
해당 .env파일에서 'DATABASE_URL'은 사용하고 있는 DB에 맞춰 작성합니다. 저는 postgres을 사용하기 때문에 그대로 사용합니다.(유저, 비밀번호, 접속 DB를 직접 입력해야 합니다.)
또한 schema=public 이여야 적용이 됩니다.
![]() |
사진4) DBMS으로 DB생성 |
prisma의 ORM을 적용하기전 해당 DB가 DBMS에 있어야 합니다. 없다면 사진4와 같이 생성해 주시면 됩니다.
그리고 .env파일을 .development.env로 변경해 줍니다.
model User {
id Int @default(autoincrement()) @id
email String @unique
name String?
posts Post[]
}
model Post {
id Int @default(autoincrement()) @id
title String
content String?
published Boolean? @default(false)
author User? @relation(fields: [authorId], references: [id])
authorId Int?
}
코드1) prisma schema작성
이제 스키마를 작성하고 저장을 합니다.
3) dotenv-cli를 글로벌로 설치
- dotenv-cli를 글로벌로 설치하여 prisam가 다른 env파일을 적용할수 있도록 한다.
$ yarn global add dotenv-cli
![]() |
사진5) dotenv-cli를 글로벌로 설치 |
코드2) package.json에 script 작성
이제 prisma로 migrate가 남았습니다. package.json에 코드2를 추가합니다. (다른scripts에다 추가!)
3) DB migrateion을 위해 script 실행(yarn)
- 실제 DB의 테이블을 생성하기 위해서 package.json에 추가한 script(코드2)를 실행한다.
$ yarn migrate:dev
![]() |
사진6) yarn migrate:dev 실행결과 |
![]() |
사진7) 테이블 생성 확인 |
이상 prisma로 DB셋팅하는 법을 마무리 하도록 하겠습니다.
gitHub링크 : https://github.com/Alex-Choi0/prisma_create_db_example.git
댓글
댓글 쓰기