🐥 JavaScript/JS백엔드

Prisma와 관계

염두리안 2025. 1. 2. 01:47
728x90
반응형

일대다 관계 정의하기

  • 참조하는 모델 필드 정의 후 shift+alt+f를 누르면 자동으로 필드 정의해줌
  • 다(多)에 해당하는 모델에 일모델을 가리키는 필드와 일모델 Id를 저장하는 필드를 정의하고, 일에 해당하는 모델엔 다모델 배열을 정의하면 됨

Relation의 onDelete

  • Cascade Foreign Key가 가리키는 데이터가 삭제되면 기존 데이터도 삭제
  • Restrict: 특정 데이터를 참조하는 데이터들이 있으면 데이터를 삭제하지 못함
  • SetNull: Foreign Key가 가리키는 데이터가 삭제되면 Foreign Key를 NULL로 설정
  • SetDefault: Foreign Key가 가리키는 데이터가 삭제되면 Foreign Key를 디폴트 값으로 설정 | Prisma에선 반드시 큰따옴표(" ") 사용
  • 릴레이션 필드가 필수라면 Restrict가, 릴레이션 필드가 옵셔널하면 SetNull이 기본값
model Order {
  // ..
  user      User        @relation(fields: [userId], references: [id], onDelete: Cascade)
  userId    String
}

 

관련된 객체 조회하기

// 함수에 include 관계필드 작성
    include: {
      userPreference: true,
    },
    
// 특정 필드만 조회 -> select 프로퍼티 사용
    include: {
      userPreference: {
        select: {
          receiveEmail: true,
        },
      },
    },

 

 Computed 필드: 다른 필드들의 값을 활용해서 계산된 필드

    let total = 0;
    order.orderItems.forEach((orderItem) => {
      total += orderItem.unitPrice * orderItem.quantity;
    });
    order.total = total;
728x90
반응형