강의

멘토링

로드맵

Inflearn brand logo image

인프런 커뮤니티 질문&답변

Full Stack 개발자님의 프로필 이미지
Full Stack 개발자

작성한 질문수

한 입 크기로 잘라먹는 Next.js(v15)

서버액션 오류

해결된 질문

작성

·

103

0

  1. 서버액션 파트에서 create-review.action 서버액션을 별도 파일로 만들었습니다. 아래 코드를 보면 딜레이가 2초 있습니다.

  2. 리뷰를 생성할 때만 딜레이를 걸어놨는데 삭제할때도 2초가 걸리는데 왜그런걸까요?

    "use server";
    
    import { delay } from "@/util/delay";
    import { revalidatePath, revalidateTag } from "next/cache";
    
    export async function createReviewAction(_: any, formData: FormData) {
      const bookId = formData.get("bookId")?.toString();
      const content = formData.get("content")?.toString(); //string타입으로 바꾸는 것
      const author = formData.get("author")?.toString();
    
      if (!content || !author || !bookId) {
        //서버에서도 예외 방지
        return {
          state: false,
          error: "리뷰 내용과 작성자를 입력해주세요",
        };
      }
    
      try {
        await delay(2000);
        const response = await fetch(
          `${process.env.NEXT_PUBLIC_API_SERVER_URL}/review`,
          {
            method: "POST",
            headers: {
              "Content-Type": "application/json", // JSON 데이터임을 명시
            },
            body: JSON.stringify({ bookId, content, author }),
          }
        );
    
        if (!response.ok) {
          //실패했다면
          throw new Error(response.statusText);
        }
    
        // 5. 태그 기준, 데이터 캐시 재검증 -> 데이터 패칭에 특정 태그를 설정한 패칭만 재검증
        revalidateTag(`review-${bookId}`); //book 페이지에 ReviewList 데이터 패칭 재검증
        return {
          state: true,
          error: "",
        };
      } catch (e) {
        return {
          state: false,
          error: `리뷰 저장에 실패했습니다. ${e}`,
        };
      }
    }
    

답변 1

0

이정환 Winterlood님의 프로필 이미지
이정환 Winterlood
지식공유자

안녕하세요 이정환입니다.

음.. 별도의 딜레이를 설정하시지 않았다면, 혹시 딜레이가 걸리는게 아니라 그냥 Supabase 백엔드의 처리 속도가 조금 늦은게 아닐까요? 정확히 2초의 딜레이가 걸리는지 Network탭을 통해 측정해보시면 좋을 것 같아요!

Full Stack 개발자님의 프로필 이미지
Full Stack 개발자

작성한 질문수

질문하기