💡

【tips】Strapiで表示件数を絞る

2024/08/29に公開

HeadlessCMSのStrapiを利用していて、少し詰まったので、投稿します。
Strapi関連の日本語情報が少ないので、誰かの参考になれば幸いです!

早速本題

要件

  • starpiでニュースの最新3件を表示するロジックを組む
  • Strapi用のクエリストリングを生成する qsライブラリ を利用する

ポイント

Strapiで表示件数を絞る際は pagination オプションを使う
page が表示するページ数
pageSize はいわゆる page per view です

microCMSを使う方なら、
page がmicroCMSでいうところの offset
pageSize がmicroCMSでいうところの limit
に当たります

参考
https://docs.strapi.io/dev-docs/api/rest/sort-pagination#pagination

ニュース取得関数全体

export const getNewsList = async ({ categoryUrl }: NewsQuery = {}): Promise<
  NewsData[] | null
> => {
  const url = new URL('/api/service-news-list', baseUrl)

  url.search = qs.stringify({
    fields: ['id', 'title', 'description', 'published_at', 'link'],
    populate: {
      thumbnail: {
        fields: ['url', 'width', 'height', 'alternativeText'],
      },
      category: {
        fields: ['label', 'url'],
      },
    },
    sort: ['createdAt:desc'],
    pagination: {
      page: 1,
      pageSize: 3,
    },
  })

  const res = await fetchData(url.href)
  if (!res) return null

  return res.data
}

以上となります!

ご意見ご質問などあれば、コメントしていただけると嬉しいです!

Discussion