관계 데이터 다루기
schema.prisma 파일을 통해 모델을 만들고, 각 테이블 사이의 관계를 정의했다. prisma를 사용하면 특정 객체에 대해 작업할 때, 연결할 수 있거나 연결 되어있는 다른 객체에 대한 작업도 함께 진행해줄 수 있다. 아래에서 사용하는 모델은 Prisma Schema에서 정의한 걸 기준으로 한다.
함께 생성하기
유저와 장바구니는 일대일 관계이므로 유저를 생성할 때 장바구니도 함께 생성할 수 있으면 좋을 것 같다. prisma는 이를 create 프로퍼티를 통해 지원하고 있다.
prisma.user.create({
data: {
...userFields,
cart: {
create: {
someProperty: true;
},
}
}
});
함께 수정하기
그래야하는 이유가 어떤 게 있을지는 좀처럼 떠올리기 힘들지만, 아무튼 어떠한 사정으로 인해 유저를 수정할 때마다 장바구니의 데이터 일부를 수정해야 한다고 해보자.
prisma.user.update({
where: { id },
data: {
...userFields,
cart: {
update: {
someProperty: false;
}
}
}
})
연결하기 / 연결 해제하기
제품을 장바구니에 넣고 빼는 행위는 서로 다른 객체를 연결하고 연결 해제하는 행위라고 볼 수 있다. prisma는 이를 update 프로퍼티를 통해 지원하고 있다.
prisma.product.update({
where: { id },
data: {
cart: {
connect / disconnect: {
id: cartId
},
},
},
})
블로그의 정보
Ayden's journal
Beard Weard Ayden