11.6 Favorite Products
좋아요. 기능 구현하기
1. Fav model 추가
favorite는 user에 의해서 생성되고, product을 가리킨다
model Fav {
id Int @id @default(autoincrement())
user User @relation(fields: [userId], references: [id], onDelete: Cascade)
userId Int
product Product @relation(fields: [productId], references: [id], onDelete: Cascade)
productId Int
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
}
model User {
...
fav Fav[]
}
model Product {
...
favs Fav[]
}
그리고, npx prisma db push
, 프론트 서버 재실행을 후에 prisma studio를 확인한다.
2. server handler 구현
fav가 product에 존재한다면, 삭제하고 존재하지 않는다면 생성한다. 먼저 fav의 여부를 확인 할 product을 조회해야 한다. 그리고 그 product에서 fav가 존재하지는지 아닌지 확인한다.
export default handler (){
// 조회하고자 하는 product을 조회하는 쿼리문
const alreadyExists = await client.fav.findFirtst({
where: {
productId, // req.query를 통해 확인
userId, // req.session에서 확인
}
});
if(alreadyExists){
// delete
await client.fav.delete({
where: {
id: alreadyExists.id,
}
})
} else {
// create fav
await client.fav.crete({
data: {
userId: {
user: {
connect: {
id: user?.id,
}
}
},
productId: {},
}
})
}
}
Author And Source
이 문제에 관하여(11.6 Favorite Products), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@with-key/11.6-Favorite-Products저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)