개발 중인 Back-end 환경이 Node.js와 Express로 구성되어 있다.
DB는 PostgreSQL을 사용하고, Prisma를 통해 접근해야 한다.
Node.js와 Express로 구성된 서버에서 Prisma를 통해 PostgreSQL DB에 접근해보자.
- 위 Prisma 공식 문서를 참고하여 작성되었다.
Prisma 사용을 위해 다음 명령어를 통해 설치를 진행한다.
$ npm install --save prisma @prisma/client
기본적인 prisma config 파일을 생성하기 위해 다음 명령어를 실행한다.
$ npx prisma init
여기까지 수행했다면,
다음과 같이 /prisma/schema.prisma
파일이 생성됐을 것이다.
generator client {
provider = "prisma-client-js"
}
datasource db {
provider = "postgresql"
url = env("DATABASE_URL")
}
또한, .env
파일에 DATABASE_URL
환경변수가 생성됐을 것이다.
DATABASE_URL="postgresql://<USER>:<PASSWORD>@<HOST>:<PORT>/<DB_NAME>?schema=<SCHEMA_NAME>"
USER
, PASSWORD
, HOST
, PORT
, DB_NAME
, SCHEMA_NAME
은
PostgreSQL 환경 세팅 시 진행했던 부분으로 채워주면 된다.
이를 통해 PostgreSQL DB를 prisma로 접근할 수 있다.
init
외에도 다양한 Prisma 명령어가 존재한다.
npx prisma db pull
: 환경변수를 통해 접근 가능해진 DB의 구조를 model 데이터로 가져온다.npx prisma db push
: schema.prisma
파일에 정의된 model을 환경변수를 통해 접근 가능해진 DB에 업데이트한다.npx prisma generate
: model이 추가/삭제/수정되는 경우에 반드시 실행해야 하고, 해당 명령어를 통해 prisma client 및 type 동기화가 진행된다.💡 model 데이터?
- 다음과 같이 Table 구조를 정의한 데이터를 말한다.schema.prisma
파일에 쓰여진다.model todo { id Int @id @default(autoincrement()) name String @db.VarChar(255) title String? @db.VarChar(255) detail String? @db.VarChar(255) }
Prisma를 사용하는 파일에서 다음과 같은 코드를 추가하여 Prisma Client 환경을 구성한다.
/api/list.ts
const { PrismaClient } = require("@prisma/client");
const prisma = new PrismaClient();
간단한 CRUD API 개발이 가능한 명령어를 정리해보고자 한다.
1. Create
const data = await prisma.<TABLE_NAME>.create({
data: { /* ... */ }
});
2. Read
where
파라미터를 통해 컬럼을 선택적으로 가져올 수 있다. (SQL의 WHERE 절과 동일함)
const data = await prisma.<TABLE_NAME>.findMany({
where: {
id: 1 // id가 1인 컬럼만 가져올 것
}
});
3. Update
where
조건에 해당하는 컬럼을 찾은 후,
data
형태로 컬럼의 update를 수행한다.
const data = await prisma.<TABLE_NAME>.update({
where: {
id: parseInt(id)
},
data: {
name,
},
});
4. Delete
where
조건에 해당하는 컬럼을 찾은 후,
컬럼 삭제를 진행한다.
const data = await prisma.<TABLE_NAME>.delete({
where: {
id: parseInt(id)
}
});