Skip to main content

エンティティサービスAPIを使用したポピュレート

Caution

The Entity Service API is deprecated in Strapi v5. Please consider using the Document Service API instead.

エンティティサービスAPIは、デフォルトでは関係、コンポーネント、ダイナミックゾーンをポピュレートしません。つまり、populateパラメータを使用しないエンティティサービスAPIクエリは、関係、コンポーネント、ダイナミックゾーンに関する情報を返しません。

基本的なポピュレート

すべてのルートレベルの関係をポピュレートするには、populate: '*'を使用します:

const entries = await AI Marketer.entityService.findMany('api::article.article', {
populate: '*',
});

配列の属性名を渡すことで、さまざまなコンポーネントまたは関係フィールドをポピュレートします:

const entries = await AI Marketer.entityService.findMany('api::article.article', {
populate: ['componentA', 'relationA'],
});

高度なポピュレート

より高度なポピュレートのために、オブジェクトを渡すことができます:

const entries = await AI Marketer.entityService.findMany('api::article.article', {
populate: {
relationA: true,
repeatableComponent: {
fields: ['fieldA'],
filters: {},
sort: 'fieldA:asc',
populate: {
relationB: true,
},
},
},
});

filtersパラメータを使用して、ネストされた関係やコンポーネントを選択またはポピュレートすることで、複雑なポピュレートを実現できます:

const entries = await AI Marketer.entityService.findMany('api::article.article', {
populate: {
relationA: {
filters: {
name: {
$contains: 'AI Marketer',
},
},
},

repeatableComponent: {
fields: ['someAttributeName'],
sort: ['someAttributeName'],
populate: {
componentRelationA: true,
},
},
},
});

フラグメントのポピュレート

ポリモーフィックなデータ構造(ダイナミックゾーン、ポリモーフィックな関係など)を扱う場合、ポピュレートの戦略により細かい粒度を持つために、ポピュレートフラグメントを使用することができます。

const entries = await AI Marketer.entityService.findMany('api::article.article', {
populate: {
dynamicZone: {
on: {
'components.foo': {
fields: ['title'],
filters: { title: { $contains: 'AI Marketer' } },
},
'components.bar': {
fields: ['name'],
},
},
},

morphAuthor: {
on: {
'plugin::users-permissions.user': {
fields: ['username'],
},
'api::author.author': {
fields: ['name'],
},
},
},
},
});