prisma 초기 설정
# 설치한 prisma를 초기화 하여, prisma를 사용할 수 있는 구조를 생성합니다.
npx prisma init
환경 설정
// .env
DATABASE_URL="mysql://<사용자 ID>:<비밀 번호>@express-database.cd6cq0uw2bs7.ap-northeast-2.rds.amazonaws.com:3306/<DB 이름>"
// schema.prisma
datasource db {
provider = "mysql"
url = env("DATABASE_URL")
}
만약 Prisma 모델이 이미 생성된 상태라면 DB 연결 명령어를 바로 입력하자.
# 설치한 prisma를 초기화 하여, prisma를 사용할 수 있는 구조를 생성합니다.
npx prisma db push
Prisma 모델 생성 예시
// 모델(테이블) 생성하기
model Posts{
postId Int @id @default(autoincrement()) @map("postId")
title String @map("title")
content String @map("content") @db.Text
password String @map("password")
createdAt DateTime @default(now()) @map("createdAt")
updatedAt DateTime @updatedAt @map("updatedAt")
@@map("Posts")
}
// schema.prisma
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? // 사용자(Users) 테이블과 사용자 정보(UserInfos) 테이블이 1:1 관계를 맺습니다.
@@map("Users")
}
model UserInfos {
userInfoId Int @id @default(autoincrement()) @map("userInfoId")
userId Int @unique @map("userId") // 사용자(Users) 테이블을 참조하는 외래키
name String @map("name")
age Int? @map("age")
gender String @map("gender")
profileImage String? @map("profileImage")
createdAt DateTime @default(now()) @map("createdAt")
updatedAt DateTime @updatedAt @map("updatedAt")
// Users 테이블과 관계를 설정합니다.
user Users @relation(fields: [userId], references: [userId], onDelete: Cascade)
@@map("UserInfos")
}
userInfos UserInfos?
해석 : userInfos라는 필드를 새로 생성된다. UserInfos 모델을 참조하는데 그 값이 있을 수도 있고 없을 수도 있다.
user Users @relation(fields: [userId], references: [userId], onDelete: Cascade)
해석 : user라는 필드를 새로 생성한다. Users라는 모델을 참조한다. @relation
은 관계에 필요한 필드와 참조 필드를 정의한다. fields에서는 현재 모델(사용자 정보(UserInfos)) 모델에서 사용할 외래키(Forien Key) 컬럼을 지정한다. references의 키([])에선 외부 모델(Users)의 컬럼을 지정하고, 참조하던 컬럼이 삭제될 경우(onDelete) 이 모델의 컬럼도 함께 삭제되도록(Cascade) 설정되어 있다.
- @id : PRIMARY KEY
- @map : 실제 데이터 베이스에서 어떤 이름으로 사용할래?(왼쪽에 쓰는 이름은 node.js에서 사용하는 이름 alias와 비슷)
- String? : NULL을 허용
- @db.Text : DB에서는 텍스트 자료형을 사용한다.
- @updatedAt : Prisma에서 업데이트 날짜를 자동으로 지원해줌
- @@map("Products") : 대문자를 소문자로 바꾸지 않으려면 이걸 써야한다.
더 많은 prisma 명령어가 궁금하다면?
'개발일지 > TIL(Today I Learned)' 카테고리의 다른 글
2024-11-26(2) (0) | 2024.11.26 |
---|---|
2024-11-26 (0) | 2024.11.26 |
2024-11-22 (3) | 2024.11.22 |
2024-11-21 (0) | 2024.11.21 |
2024-11-20 (1) | 2024.11.20 |
댓글