Document Service API: フィールドのポピュレート
既定では、Document Service API はリレーション、メディア、コンポーネント、ダイナミックゾーンをいずれもポピュレートしません。このページでは、populate で特定のフィールドをポピュレートする方法を説明します。
Tip
返すフィールドだけを絞るには fields も使えます(fields パラメータ のドキュメントを参照)。
Caution
Users & Permissions プラグインが有効な場合、ポピュレート先のコンテンツタイプに対して find 権限が必要です。ロールがそのコンテンツタイプにアクセスできない場合、ポピュレートされません。
リレーションとメディア
クエリでは populate で、ポピュレートするフィールドを次のような形で指定します。
すべてのリレーションを 1 階層だけ
すべてのリレーションを 1 階層だけポピュレートするには、populate にワイルドカード * を使います。
リクエスト例
const documents = await strapi.documents("api::article.article").findMany({
populate: "*",
});
レスポンス例
{
[
{
"id": "cjld2cjxh0000qzrmn831i7rn",
"title": "Test Article",
"slug": "test-article",
"body": "Test 1",
// ...
"headerImage": {
"data": {
"id": 1,
"attributes": {
"name": "17520.jpg",
"alternativeText": "17520.jpg",
"formats": {
// ...
}
// ...
}
}
},
"author": {
// ...
},
"categories": {
// ...
}
}
// ...
]
}
特定のリレーションだけ 1 階層
特 定のリレーションだけを 1 階層ポピュレートするには、リレーション名を populate の配列で渡します。
リクエスト例
const documents = await strapi.documents("api::article.article").findMany({
populate: ["headerImage"],
});
レスポンス例
[
{
"id": "cjld2cjxh0000qzrmn831i7rn",
"title": "Test Article",
"slug": "test-article",
"body": "Test 1",
// ...
"headerImage": {
"id": 2,
"name": "17520.jpg"
// ...
}
}
// ...
]