1/3 TIL

taetae·2023년 1월 3일
0

내배캠 TIL

목록 보기
31/48
post-custom-banner

▶ 어떤 문제가 있었는지

팀 프로젝트에서 내가 맡은 부분은 리뷰 작성 페이지.
처음에는 API 명세대로 POST만 작성하려고 했는데 리뷰 수정과 삭제도 있어야 할 거 같았다.

▶ 내가 시도해본 것들

수정과 삭제 API도 함께 만들었다. 그런데 리뷰 수정이라는 기능이 꼭 필요한가 싶었다.

▶ 어떻게 해결 했는지

그래서 과감히 수정 기능은 삭제하고 POST와 DELETE 기능만 남겼다.

// 리뷰 작성
router.post('/:request_id', authMiddleware.auth_middleware, async (req, res) => {
  const { user_id } = res.locals.user;
  const { review, star } = req.body;
  const { request_id } = req.params;
  const request = await request_status.findByPk(request_id);

  const newRequest = await review.create({
    review: review,
    star: star,
    customer_id: user_id,
    provider_id: request.provider_id,
    photo: ult_raw.cast_to_raw('This is a blob description')
  })
  return res.status(200).json({message:'리뷰 작성을 완료했습니다.'})
  
})

// 리뷰 삭제
router.delete('/:review_id', authMiddleware.auth_middleware, async (req, res) => {
  const { review_id } = req.params;
  const { user_id } = res.locals.user;

  const deleteReview = await review.findByPk({ review_id });
  // review_id에 해당하는 리뷰 글이 없는 경우 에러 메세지
  if (!deleteReview) {
    return res.status(404).json({
      errorMessage: '리뷰글을 찾지 못했습니다.'
    });
  }

  // 리뷰 글은 존재하나 작성자 본인이 아닌 경우
  if (user_id !== deleteReview.customer_id) {
    return res.status(401).json({
      errorMessage: '작성자 본인만 삭제 가능합니다.'
    });
  }
  // 작성자 본인이 맞는 경우, 삭제 진행
  await deleteReview.destroy();
  return res.status(200).json({
    message: '리뷰를 삭제하였습니다.'
  })
})

▶ 새롭게 알게된 것

CRUD에 집중하다보니 꼭 필요하지 않은 부분에도 필요처럼 느껴지게 되는게 필요하지 않을 때는 과감하게 버릴 것.

post-custom-banner

0개의 댓글