🐥 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
반응형