[Prisma] Prisma 설치하기

koline·2023년 11월 14일

prisma

목록 보기
2/6

NodeJS 환경에서 Prisma 설치하는 방법을 알아보자. (Prisma는 NodeJS 라이브러리)

1. NodeJS 프로젝트 생성

# npm 사용할 경우
npm init -y

# yarn 사용할 경우
yarn init

우선 원하는 디렉토리에 프로젝트를 생성해준다.

2. Prisma Dependency 추가

# npm 사용할 경우
npm i prisma

# yarn 사용할 경우
yarn add prisma

프로젝트를 생성한 디렉토리(package.json이 위치한 디렉토리)에서 위 명령어를 사용해 prisma 의존성을 추가해준다.

3. dotenv Dependency 추가

# npm 사용할 경우
npm i dotenv

# yarn 사용할 경우
yarn add dotenv

이 과정은 필수적이진 않지만 dbconnection 설정할 때 db 서버의 url을 그대로 노출시키는건 매우 위험하기 때문에 dotenv에 url을 숨기기위해 사용한다.

4. prisma 초기화

# npm 사용할 경우
npx prisma init

# yarn 사용할 경우
yarn prisma init

prisma를 초기화 하게되면 위 명령어를 실행한 경로에 prisma 디렉토리가 생성되고 해당 디렉토리 안에 schema.prisma 파일이 생성된다.

5. dotenv 파일 생성

# .env
DATABASE_URL = 'mysql://(아이디):(비밀번호)@(도메인):(포트)/(스키마명)?schema=public'

원하는 디렉토리에 '.env'라는 이름의 파일을 생성한 뒤 생성된 파일을 열어 원하는 이름으로 db의 url을 입력한다. url은 사용하는 DBMS에 따라 다르니 구글해보시길,,

참고로 이 URL을 처리하는 과정에서 일부 특수문자는 처리과정에 오류가 날 수 있기 때문에 이스케이프 처리를 해줘야한다.
예를들어 '@'의 경우 원래 뒤에 DB 서버의 도메인과 포트가 위치함을 뜻하기 때문에 '@'를 나타내는 '%40'으로 바꾸거나 주석을 나타내는 '#'은 '%23'으로 변경해야 한다.

6. schema.prisma 작성

generator client {
  provider = "prisma-client-js"
}

datasource db {
  provider = "postgresql"	// 사용하는 DBMS로 변경
  url      = env("DATABASE_URL")
}

schema.prisma 파일을 열면 위와 같이 default로 작성이 되어 있을 것이다. 사용하는 DBMS에 맞게 변경해준다.

참고로 datasource의 env("여기")에 들어가는 이름은 아까 dotenv에 기입한 변수명과 일치해야한다.

7. (필요한 경우) DB에서 스키마 가져오기

# npm 사용할 경우
npx prisma introspect

# yarn 사용할 경우
yarn prisma introspect

위 명령어를 실행하면 환경설정한 DB에 연결하여 스키마 정보를 가져와서 자동으로 model을 schema.prisma 파일에 작성한다.

다만 이 기능은 이미 DB에 사용중인 테이블이 있거나 어쩔 수 없이 DB의 테이블을 사용해야 할 경우에만 사용하는 것이 좋다. 왜냐하면 Prisma의 특징 중 하나가 schema.prisma에 작성된 model들이 유일한 entity의 source of truth 라는 점인데, 모든 테이블과 칼럼을 introspect로 가져온다고 하더라도 직접 db에 작업하기 보다는 prisma를 사용하는 편이 좋은 방법인 듯 하다.

8. prisma client Dependency 추가

# npm 사용할 경우
npm install @prisma/client

# yarn 사용할 경우
yarn add @prisma/client

prisma를 서버에서 사용하기 위해서는 prisma client 의존성을 추가해야 한다. 이 라이브러리를 사용하여 실제로 데이터를 CRUD할 수 있다. client는 여기저기서 초기화하지 말고 원하는 디렉토리에 client.ts 파일을 생성하고

const { PrismaClient } = require('@prisma/client')

const client = new PrismaClient();

export default client;

아래와 같이 초기화하여 위에서 export된 client를 import하여 사용한다.

profile
개발공부를해보자

0개의 댓글