post의 like 값을 수정하고 싶다면(eg. +1 or -1) 유니크 키를 통해 데이터에 접근 후 post.like +1 과 같은 행동을 할 수 있다.
하지면 통신 측면에서 값을 조회 후 업데이트 하는 것은 두번 이상의 행위를 하는 것이므로 비효율.
update의 increase / decrease를 통해 조회와 동시에 값을 수정 해보자.
(cf. string 필드를 추가한다면 https://github.com/prisma/prisma/issues/15269 요거 참고 )
export async function PATCH(
req: Request,
{ params }: { params: { postId: string } }
) {
try {
const { postId } = params;
if (!postId) {
return new NextResponse('Invalid postId', { status: 400 });
}
const body = await req.json();
const { isIncrease } = body;
if (isIncrease) {
await db.post.update({
where: {
id: postId,
},
data: {
like: {
increment: 1,
},
},
});
} else {
await db.post.update({
where: {
id: postId,
},
data: {
like: {
decrement: 1,
},
},
});
}
return new NextResponse('success', { status: 200 });
} catch (error) {
return new NextResponse('internal error', { status: 500 });
}
}
'Database > Prisma' 카테고리의 다른 글
[Prisma] 검색 기능 추가 해보기 (feat. searchParmas & next.js) (1) | 2024.02.13 |
---|---|
[Prisma] provider = "MongoDB" 일 때 모델의 id에 대해 (0) | 2023.08.03 |
[Prisma] @id @default(auto()) @map("_id") @db.ObjectId 의미 (0) | 2023.07.15 |
Prisma & PlanetScale 설치 및 연결 (yarn, next.js, mysql) (0) | 2022.12.04 |