Astro v5 Content Layer API の使い方 - 3. 自作ローダー インラインローダーの作り方

[Astro]

[Content Layer API]

[フロントエンド]

Astro v5になって導入されたContent Layer APIの使い方シリーズその3です。

自作ローダーには次の2つの形式があります。

  1. インラインローダー
  2. オブジェクトローダー

インラインローダーは defineCollection の引数に渡すオブジェクトの loader プロパティにasync関数を直接書く方法で、オブジェクトローダーは Loader 型を返す関数を loader プロパティで呼び出す方法です。

その2で紹介したサードパーティローダーはオブジェクトローダーの一例です。

今回はインラインローダーの作り方を紹介します。

const myOwnCollection = defineCollection({
loader: async () => {
return [
{ id: 1, title: 'title1', body: 'body1' },
{ id: 2, title: 'title2', body: 'body2' },
]
},
schema: z.object({
z.string('id'),
z.string('title'),
z.string('body'),
}),
})

loader プロパティにasync関数を書き、戻り値として配列を返すことで、インラインローダーを作成できます。 async関数内でAPIの呼び出し、ファイルの読み込み、データベースの問い合わせなど、nodeでできることは何でもできます。

注意点として、戻り値の配列には文字列を値として持つ id プロパティが必要です。取得したデータに id がない場合は自分で追加してください。

以上がインラインローダーの作り方でした。次回はオブジェクトローダーの作り方を紹介します。

Astro v5 Content Layer API の使い方 - 2. サードパーティローダー
Astro v5 Content Layer API の使い方 - 4. 自作ローダー オブジェクトローダーの作り方