티스토리 뷰

반응형

[prisma+nextjs] api(rest) 서비스에서 upsert(insert+update) 기능 활용하기 with PostMan

 

prisma로 개발을 활용하다보니, update 시 값이 존재하지 않으면 insert하던 기능이 아쉬워서 조금 찾아보니,

upsert라는 기능이 있어서 비슷한 구현이 가능하였다.

 

test툴은 포스트맨을 사용하였다.

 

0.prisma 연결할 DB 구현

1.get 서비스 구현

2.post 서비스 구현

3.upsert 기능 구현

4.테스트 진행

 

#DB 정의

model HistoryContent {
  id      Int     @id @default(autoincrement())
  mediaID Int
  period  String
  content String
  Desc    String?
}

 

#Get Post 서비스 구현

async function handler(
  req: NextApiRequest,
  res: NextApiResponse<ResponseType>
) {
  if (req.method === "GET") {
    const historyContent = await client.historyContent.findMany();
    console.log(historyContent);
    res.json({
      ok: true,
      historyContent,
    });
  } else if (req.method === "POST") {
    console.log(req.body);
    const { mediaID, period,content,id } = req.body;
    console.log(` content:${period} ,  content:${content}, id:${id},mediaID:${mediaID}`);
    const historyContent = await client.historyContent.upsert({
        create:{
            mediaID,
            period,
            content,

        },
        update:{
            mediaID,
            period,
            content,
        },
        where:{
            id:id
        }
    });
    return res.status(200).json({ ok: true, historyContent });
  }
}
export default withHandler({ methods: ["GET", "POST", "DELETE"], handler });

-보다시피 upsert는 where 절에 id의 존재여부에 따라서 존재 시 update 존재하지 않을 시 insert로 자동처리해주고있다, 제법 유용하게 로직처리를 진행 할 수 있다.

 

#테스트

테스트는 Postman을 활용하여, json형태의 파라미터를 사용하였다.

 

#prisma #nextjs #upsert #insert #post #update #react

반응형
댓글
반응형