🐙
Go x Next.js で sql: no rows in result set が発生した時の対処法
現象
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