🔖
microCMSで filters を使うときに「limit」を指定し忘れる落とし穴
背景
技術ブログやニュースサイトで、カテゴリ別の一覧ページ(例:/category/business)を作るなら、getStaticPathsなどを使って、特定カテゴリの記事を取得→ページネーション…という実装が一般的です。
よくある実装例
export async function getStaticPaths({ paginate }) {
const res = await getNews({
filters: "works[equals]type1",
orders: "-publishedAt",
limit: 100,
});
return paginate(res.contents, { pageSize: 10 });
}
- filters でカテゴリ絞り込み
- limit で 最大100件 を取得
- paginate(..., { pageSize: 10 }) で10件ずつのページ分け
一見問題なさそうですが、limit
を省くと問題が起きることがあります。
「limit」を省略すると…
自作ラッパーや第三者パッケージ (fetchAllNews() など) によっては、
- limit がない=全件取得、とみなすもの
- filters が効かず全データを取ってくる実装になっているものも
結果:
- フィルター対象外データまで取得してしまい
- ビルドが極端に遅くなる
- さらにAPI制限に引っかかるリスクもあります。
✅ 対策ポイント
常に明示的にlimit
を指定しましょう。
「どれだけ取得するか」を意識して、安全値を決めておくのが大切です。
const res = await getNews({
filters: "works[equals]type1",
orders: "-publishedAt",
limit: 100, // 明示的に指定
});
✏️ 参考
この記事の内容は、次のページを元に解説しました:
microCMSで limit を省くとフィルターが効かないケースがある
Discussion