Prisma란?
SQL 코드를 쓰지 않고, js코드(typescript도 가능)를 작성해 데이터베이스를 수정할 수 있도록 연결해주는 서비스
Prisma의 필요성
SQL 코드를 배울 필요가 없다 ㅋㅋ
기존의 SQL 코드보다, js코드가 훨씬 보기 편하고 단순하기 때문에 효율적인 데이터베이스 관리가 가능하다
Prisma 설치
npm i -D prisma
Prisma 프로젝트 생성하기
npx prisma init
Prisma 프로젝트 초기 설정하기
.env 파일은 서버에 대한 중요한 정보가 담겨있으므로, 타인에게 공유하시면 안됩니다!
PostgreSQL 설정하기 ( 리눅스 / 우분투 )
// postgres 명령창(shell) 접속
sudo -u postgres psql
// DB 확인하기
\l
// 사용자 계정 만들기
CREATE USER <사용자> PASSWORD <암호>;
// 사용자 전용 DB 만들기
CREATE DATABASE <DB> OWNER <사용자>;
PostgreSQL이란?
Prisma에 PostgreSQL DB 연결하기
//.env 파일
DATABASE_URL="postgresql://<사용자>:<비밀번호>@localhost:5432/<DB>?schema=public"
// 위에서 만든 사용자와, DB 정보를 입력한다.
Prisma 에서 DB 테이블 추가하기
Prisma 문법 하이라이팅 도구 ( 보기 쉽게 색깔 입히기 )
DB 연결하기
// schema.prisma
// Prisma의 문법에 맞게, js를 닮은 문법으로 데이터베이스를 수정할 수 있는 파일
// DB 기본 설정
datasource db {
provider = "postgresql"
url = env("DATABASE_URL")
}
generator client {
provider = "prisma-client-js"
}
// Book 모델 만들기 : Prisma가 우리가 작성한 모델을 기반으로, DB를 수정해준다
model Book {
id Int @default(autoincrement()) @id // @default() 로 기본값을 지정, 모델의 id로 지정
title String
year Int
genre String? // ? 를 붙이면, 데이터가 필수적으로 주어지지 않아도 된다.
createAt DateTime @default(now()) //now()를 사용해 현재시간을 기본값으로 지정
updateAt DateTime @updatedAt // @updateAt 이용해 업데이트될때 현재시간 적용
}
모델 연결하기
// Profile, Post가 있어도 되고, 없어도 된다.
model User {
id Int @id @default(autoincrement())
username String
Profile Profile?
Post Post[]
}
// Profile는 1유저당 1개만 있어야 한다 ( 일대일 대응 )
// Post는 1유저에 여러개를 가질 수 있다 ( 일대다 대응 )
// User가 무조건 있어야 한다.
model Profile {
id Int @id @default(autoincrement())
bio String?
userId Int @unique
User User @relation(fields: [userId], references: [id])
}
// User가 무조건 있어야 한다.
model Post {
id Int @id @default(autoincrement())
title String
photo String
userId Int @unique
User User @relation(fields: [userId], references: [id])
}
작성한 모델을 PostgreSQL DB에 적용하기
npx prisma migrate dev --name <이름>
npm으로, migrate 명령어 단축하기
// package.json
"scripts": {
"migrate": "npx prisma migrate dev"
...
}
// 다음부터 npm run migrate 명령으로 DB를 수정할 수 있다.
모델 덮어쓰기
// 기존의 db 내용은 지워진다.
npx prisma db push
반응형