๐ ์ํฉ
์ง๋๋ฒ orm์ผ๋ก ์ํ๋ผ์ด์ฆ๋ฅผ ์ฌ์ฉํด ๋ดค๋๋ฐ,
์ด๋ฒ์๋ ํ์ ์คํฌ๋ฆฝํธ์์๋ ์ฌ์ฉ ๊ฐ๋ฅํ ํ๋ฆฌ์ฆ๋ง์ ๋ํด ์์๋ณด์๋ค.
์ด๋ค์ ๋ค์ด ๋ค๋ฅด๊ณ ์ด๋ป๊ฒ ์ฌ์ฉํ๋๊ฑด์ง ๊ฐ๋ตํ ์์๋ณด์.
๐ท ํ๋ฆฌ์ฆ๋ง
์ผ๋จ ํ๋ฆฌ์ฆ๋ง๋ ์๋ฐ์คํฌ๋ฆฝํธ, ํ์ ์คํฌ๋ฆฝํธ, ๊ทธ๋ฆฌ๊ณ ๋ฏธ์ฝํ์ง๋ง mongodb๋ ์ง์ํ๋ค.
๋ ์ํ๋ผ์ด์ฆ๋ ํ ์ด๋ธ์ ์์ฑํ๋ ๋ง์ด๊ทธ๋ ์ด์ ํ์ผ๊ณผ, ์ฐ๊ฒฐํ๋ ๋ชจ๋ธ ํ์ผ์ด ์์ด ๋ ํ์ผ ๋ค ์ค์ ์ ํด์ค์ผ๋ง ํ๋ค.
์ด์ ๋ค๋ฅด๊ฒ ํ๋ฆฌ์ฆ๋ง๋ index.js ํ์ผ ์์ prisma client๋ฅผ ๊ฐ์ ธ์ ์ค์ ํ๊ณ ,
schema.prisma ํ์ผ์์ ํ ์ด๋ธ์ ์ค์ , ๊ด๋ฆฌํ ์ ์๋ค.
์ผ๋จ ์ ํ ์์ ์ ์๋์ ๊ฐ๋ค.
# yarn ํ๋ก์ ํธ๋ฅผ ์ด๊ธฐํ.
yarn init -y
# express, prisma, @prisma/client ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ค์น.
yarn add express prisma @prisma/client
# nodemon ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ DevDependency๋ก ์ค์น.
yarn add -D nodemon
# ์ค์นํ prisma๋ฅผ ์ด๊ธฐํ ํ์ฌ, prisma๋ฅผ ์ฌ์ฉํ ์ ์๋ ๊ตฌ์กฐ๋ฅผ ์์ฑ.
npx prisma init
#Prisma Client๋ฅผ ์์ฑํ๋ ๋ช
๋ น์ด
#node_modules/@prisma/client ํด๋ ์์ ์ฐ๋ฆฌ๊ฐ ์ฌ์ฉํ๋ prisma client ์ฝ๋๋ฅผ ์์ฑ
npx prisma generate
์ดํ ์๋์ ๊ฐ์ด ์คํค๋ง๋ฅผ ์ค์ ํด ์ฃผ๋ฉด ๋๋ค.
generator client {
provider = "prisma-client-js"
}
datasource db {
provider = "mysql"
url = env("DATABASE_URL")
}
model Users {
userId Int @id @default(autoincrement()) @map("userId")
email String @unique @map("email")
password String @map("password")
createdAt DateTime @default(now()) @map("createdAt")
updatedAt DateTime @updatedAt @map("updatedAt")
//ํ์ํ
์ด๋ธ์ด๋ฆ ๊ด๊ณ
UserInfos UserInfos? //1:1 ๊ด๊ณ
Posts Posts[] // 1: n ๊ด๊ณ
Comments Comments[]
@@map("Users")
}
model UserInfos {
userInfoId Int @id @default(autoincrement()) @map("userInfoId")
UserId Int @unique @map("UserId")
name String @map("name")
age Int? @map("age") //null์ ํ์ฉํ๋ค๋ ์๋ฏธ๋ก ๋ฐ์ดํฐ ํ์
์์ ? ๋ผ๊ณ ์ ์
gender String @map("gender")
profileImage String? @map("profileImage")
createdAt DateTime @default(now()) @map("createdAt")
updatedAt DateTime @updatedAt @map("updatedAt")
// fields ( ํ์ฌ ํ
์ด๋ธ์ ์ปฌ๋ผ, references: ์ฐธ๊ณ ํ ํ
์ด๋ธ์ ์ปฌ๋ผ)
User Users @relation (fields: [UserId], references : [userId], onDelete: Cascade)
@@map("UserInfos")
}
model Posts {
postId Int @id @default(autoincrement()) @map("postId")
UserId Int @map("UserID")
title String @map("title")
content String @map("content") @db.Text
createdAt DateTime @default(now()) @map("createdAt")
updatedAt DateTime @updatedAt @map("updatedAt")
User Users @relation(fields : [UserId], references : [userId], onDelete : Cascade)
Comments Comments[]
@@map("Posts")
}
์ถ๊ฐ์ ์ธ ์ฌ์ฉ๋ฒ์ ๊ณต์๋ฌธ์๋ฅผ ์ฐพ์๋ณด์/
์ฐธ๊ณ ํ ์ฌ์ดํธ
https://medium.com/@olafdev/prisma-schema-%ED%8E%B8-2401c9609ae2
https://defineall.tistory.com/1052
'TIL' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
23/12/01 TIL __ ํธ๋์ญ์ 2. LOCKS (0) | 2023.12.01 |
---|---|
23/11/30 TIL __ prisma ์์ ํ ์ด๋ธ ์กฐ์ธํ๊ธฐ (0) | 2023.12.01 |
23/11/28 TIL __ ํธ๋์ญ์ ์ด๋? (0) | 2023.11.29 |
23/11/27 TIL __ passport๋ก ์นด์นด์คํก ๋ก๊ทธ์ธ ํ๊ธฐ 2 (๋ฉ๋ถ) (0) | 2023.11.28 |
23/11/26 TIL __ passport ๋ก ์นด์นด์ค ๋ก๊ทธ์ธ ๊ธฐ๋ฅ ๊ตฌํํ๊ธฐ 1 (0) | 2023.11.26 |