개발일지/TIL(Today I Learned)

2024-11-25

프린스 알리 2024. 11. 25.

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) 설정되어 있다.

  1. @id : PRIMARY KEY
  2. @map : 실제 데이터 베이스에서 어떤 이름으로 사용할래?(왼쪽에 쓰는 이름은 node.js에서 사용하는 이름 alias와 비슷)
  3. String? : NULL을 허용
  4. @db.Text : DB에서는 텍스트 자료형을 사용한다.
  5. @updatedAt : Prisma에서 업데이트 날짜를 자동으로 지원해줌
  6. @@map("Products") : 대문자를 소문자로 바꾸지 않으려면 이걸 써야한다.

더 많은 prisma 명령어가 궁금하다면?

Prisma CLI reference | Prisma Documentation

'개발일지 > 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

댓글