🐙

Go x Next.js で sql: no rows in result set が発生した時の対処法

2023/02/15に公開約600字

現象

Next.js で useEffect を使用して todo の詳細ページを表示したらsql: no rows in result set エラーが発生し表示できない

対処法

useEffect に追記する

  const router = useRouter();
  const id = router.query.id;
  useEffect(() => {
+   if (!router.isReady) return;
    client
      .get("show-todo", {
        params: {
          id: id,
        },
      })
      .then(({ data }) => {
        setTodo(data);
      });
- }, []);
+ }, [router.isReady]);

原因

router.query.id の値が undefined と id の値両方 が表示されているため(無い id で探しても見つからないのは当然)

なので

  • if (!router.isReady) return; で準備が出来てないときはリクエストを実行しないようにする
  • 第2引数に router.isReady を追加することで準備ができたら実行するようにする

ことで解決できた

最後に

間違いなどありましたらコメントいただけるとありがたいです!!

Discussion

ログインするとコメントできます