[TIL] 09/02 :: 리뷰 수정 error | 상품 삭제

yeseul·2024년 9월 2일

<TIL>

목록 보기
40/43

* 문제상황 1.

구매한 내역의 상품에 들어가서 작성된 리뷰를 수정할때

- 별점만 수정하고 싶은데,

    if (!availableReview) {
      showSwal('해당 상품에 대한 구매 내역이 없어<br> 리뷰를 작성할 수 없습니다.');
      return;
    }

이부분에 걸려서 모달이 띄워짐.
모달 확인버튼 누른후 다시 수정하기 버튼 클릭하면 제대로 반영됨
어느리뷰는 바로 수정이 되고 또 어느리뷰는 모달창이 띄워짐..

✔️내용만 수정할땐 잘 동작함

✔️배포된 사이트에서만 swal 이 뜨고, 로컬환경에서는 수정반영이 빠르게 잘 된다.

검색해보니..
💡현재 상황에서는 상태 업데이트의 타이밍 문제나 비동기 작업의 지연이 원인일 가능성이 높다. 로컬 개발 환경에서는 코드 실행이 빠르기 때문에 문제가 발생하지 않지만, 배포된 환경에서는 네트워크 지연이나 다른 비동기 작업의 속도 차이로 인해 이런 문제가 발생할 수 있다.


* 기능구현

  • 판매자 마이페이지 - 판매중인 상품 삭제기능 추가

* 작업 상세 내용

  • 상품목록 왼쪽 체크박스 추가하기
    • 전체 / 부분선택
      • selectedProducts 상태로 관리. -> 배열
  • 상품등록 옆 상품삭제 버튼 추가하기
    • 체크박스 선택 X => disable 처리
    • 체크박스 하나라도 선택시 삭제하기 버튼 선택가능
    • hover 컬러변경
  • 버튼 클릭시 새로고침 없이 상품 목록에서 삭제


* 추가한 함수

  const handleDeleteSelectedProducts = async () => {
    if (selectedProducts.length === 0) return;

    try {
      await deleteProducts(selectedProducts); // 선택된 상품 DB에서 삭제
      setProducts(products.filter((product) => !selectedProducts.includes(product.product_id))); // 삭제된 상품 제외한 나머지 상품들로 상품목록(products) 상태 업데이트
      setSelectedProducts([]); // 선택된 상품 목록 초기화
    } catch (error) {
      console.error('상품 삭제 중 오류가 발생했습니다:', error);
    }
  };

  // 개별항목 체크박스 선택
  const handleCheckboxChange = (productId: string, ischecked: boolean) => {
    if (ischecked) {
      setSelectedProducts([...selectedProducts, productId]);
    } else {
      setSelectedProducts(selectedProducts.filter((id) => id !== productId));
    }
  };

  // 전체항목 체크박스 선택
  const handleAllCheckboxChange = (ischecked: boolean) => {
    if (ischecked) {
      setSelectedProducts(products.map((product) => product.product_id));
    } else {
      setSelectedProducts([]);
    }
  };


* 문제상황 2-1.

상품삭제기능 구현 후, 메인화면의 라이브스트리밍 swiper 쪽에서 error

<SwiperSlide key={video.streamData[0].livestream_id}>
  <LivestreamingCard videosData={video} />
</SwiperSlide>
  • 로컬

  • 배포된 사이트

🤔 라이브방송 시작할때 연결할 상품을 선택하는데, 그 상품이 삭제되면 저장된 라이브 방송도 삭제되게 해야할것같다.
-> 이렇게되면 상품에 연결된 채팅방도 삭제해야할것같고,
-> 결국 삭제된 상품이랑 관련된 모든 테이블의 데이터도 삭제해야하는데~

❗ DB에서 라이브방송에 연결된 상품 id 를 남아있는 상품 id로 바꿨는데도 여전한 에러발생!
❗ supabase 외래키 설정에서 Cascade 옵션이 잘 설정되어있어서 productid 삭제되면 관련된 레코드도 다 삭제된다.
그럼 왜 발생한 에러인거지..


* 문제상황 2-2.

상품삭제된 목록이 페이지네이션에 반영이 안됨

0개의 댓글