데이터베이스와 통신하는 일종의 툴. Prisma는 ORM으로 우리가 사용하는 언어로 데이터베이스에 접근할 수 있게 함.
ORM: 객체와 모델 사이의 관계를 기술하는 도구
$yarn add -D prisma
여러가지 cli 명령어들이 있고 이 명령어를 통해 결과물을 만들어냄. 우리는 prisma 자체를 쓰는 것이 아니라 이 결과물을 쓰기 때문에 -D로 다운로드
Prisma 자료형
문자열 - String

정수 - Int

실수 -Float, Double, Decimal

날짜 - DateTime

논리형 - Boolean

![]() | ![]() |
|---|
model User{
id String @id @default(uuid()) // PK 선언시에는 @id, default(uuid())는 데이터 생성 될 때 자동으로 id 생성해주는 코드
age Int? // 자료형 뒤 물음표는 NULL값 허용한다는 뜻
name String? @db.VarChar(100)
email String? @db.VarChar(100)
phoneNumber String? @db.Char(11)
posts Post[] // 1:N 관계이기 때문에 배열로 넣어줘야함. User는 Post를 여러개 생성할 수 있음
}
model Post {
id String @id @default(uuid())
title String? @db.VarChar(100)
content String? @db.VarChar(100)
userId String?
user User? @relation(fields: [userId], references: [id])
// FK 선언 fields - 어떤 값을 FK로 쓸 것인지, references - 상대 테이블의 어떤 값 연결할지
}
📌 prisma를 사용해서 테이블 작성해보기
$yarn prisma init
입력하면 root > prisma > schema.prisma 생성됨.
// schema.prisma
// This is your Prisma schema file,
// learn more about it in the docs: https://pris.ly/d/prisma-schema
generator client {
provider = "prisma-client-js"
}
datasource db {
provider = "mysql"
url = env("DATABASE_URL")
}
model User{
id String @id @default(uuid())
age Int
name String @db.VarChar(200)
email String @db.VarChar(200)
phoneNumber String @db.Char(11)
posts Post[]
}
model Post {
id String @id @default(uuid())
title String @db.VarChar(100)
content String @db.LongText
userId String // FK
user User @relation(fields: [userId], references: [id])
}
.env 파일이란?
환경 변수(프로그램 '실행'에 필요한 변수)를 저장하는 파일. '.'이 붙으면 깃허브에 올리거나 할 때 포함되지 않아 보안에 좋음.
// .env
NODE_ENV=dev // 실행할 환경에 대한 변수. 배포환경에서는 prod
PORT=8000
DATABASE_URL="mysql://root:[내 mysql 비밀번호]@localhost:3306/[사용할 db이름]"
DATABASE_URL

🚨데이터베이스 이름 확인하러 DBeaver 켰더니 에러 발생하고 연결이 안 됐다.
Public Key Retrieval is not allowed
접속하고자 하는 DB 우클릭 > Edit Connection.
켜진 창에서 Driver Properties > allowPublicKeyRetrieval 을 TRUE로 바꿔주니 해결됨.
MySQL 8.x 버전부터 발생하는 문제라고 한다. 이유는 나도 모르겠음..........
$yarn prisma init
$yarn prisma generate
$yarn prisma migrate dev

$yarn prisma db pull

$yarn prisma db push

📌 실습
$yarn prisma migrate dev


테이블 생성됨
$yarn prisma generate
수정 후 generate 잊지 말기!