NodeJS 환경에서 Prisma 설치하는 방법을 알아보자. (Prisma는 NodeJS 라이브러리)
# npm 사용할 경우
npm init -y
# yarn 사용할 경우
yarn init
우선 원하는 디렉토리에 프로젝트를 생성해준다.
# npm 사용할 경우
npm i prisma
# yarn 사용할 경우
yarn add prisma
프로젝트를 생성한 디렉토리(package.json이 위치한 디렉토리)에서 위 명령어를 사용해 prisma 의존성을 추가해준다.
# npm 사용할 경우
npm i dotenv
# yarn 사용할 경우
yarn add dotenv
이 과정은 필수적이진 않지만 dbconnection 설정할 때 db 서버의 url을 그대로 노출시키는건 매우 위험하기 때문에 dotenv에 url을 숨기기위해 사용한다.
# npm 사용할 경우
npx prisma init
# yarn 사용할 경우
yarn prisma init
prisma를 초기화 하게되면 위 명령어를 실행한 경로에 prisma 디렉토리가 생성되고 해당 디렉토리 안에 schema.prisma 파일이 생성된다.
# .env
DATABASE_URL = 'mysql://(아이디):(비밀번호)@(도메인):(포트)/(스키마명)?schema=public'
원하는 디렉토리에 '.env'라는 이름의 파일을 생성한 뒤 생성된 파일을 열어 원하는 이름으로 db의 url을 입력한다. url은 사용하는 DBMS에 따라 다르니 구글해보시길,,
참고로 이 URL을 처리하는 과정에서 일부 특수문자는 처리과정에 오류가 날 수 있기 때문에 이스케이프 처리를 해줘야한다.
예를들어 '@'의 경우 원래 뒤에 DB 서버의 도메인과 포트가 위치함을 뜻하기 때문에 '@'를 나타내는 '%40'으로 바꾸거나 주석을 나타내는 '#'은 '%23'으로 변경해야 한다.
generator client {
provider = "prisma-client-js"
}
datasource db {
provider = "postgresql" // 사용하는 DBMS로 변경
url = env("DATABASE_URL")
}
schema.prisma 파일을 열면 위와 같이 default로 작성이 되어 있을 것이다. 사용하는 DBMS에 맞게 변경해준다.
참고로 datasource의 env("여기")에 들어가는 이름은 아까 dotenv에 기입한 변수명과 일치해야한다.
# 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를 사용하는 편이 좋은 방법인 듯 하다.
# 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하여 사용한다.