NestJS Prisma ORM으로 DB구성하기(다른 env파일명)

 nestjs에 prisma를 셋팅하여 해당 DB를 구성하도록 하겠습니다.


아래는 참고한 공식 문서 입니다.


NestJS 문서 : https://docs.nestjs.com/recipes/prisma

Prisma 문서 : https://www.prisma.io/docs/guides/development-environment/environment-variables/using-multiple-env-files


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를 글로벌로 설치

"scripts": {
"migrate:dev": "dotenv -e .development.env -- npx prisma migrate dev"
}

코드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

댓글

이 블로그의 인기 게시물

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

DAQ로 전압 측정하기-2

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