본문 바로가기
Database/Prisma

prisma client로 현재 data의 값을 수정하는 법

by 위그든씨 2024. 2. 1.

prisma docs

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 });
    }
}