Astro v5 Content Layer API の使い方 - 3. 自作ローダー インラインローダーの作り方
Astro v5になって導入されたContent Layer APIの使い方シリーズその3です。
自作ローダーには次の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 がない場合は自分で追加してください。
以上がインラインローダーの作り方でした。次回はオブジェクトローダーの作り方を紹介します。