Entity Service API 默认不填充关系、组件或动态区域。
基本填充
要填充所有根级关系,请使用 populate: '*'
:
js
const entries = await strapi.entityService.findMany('api::article.article', {
populate: '*',
})
通过传递属性名称数组来填充各种组件或关系字段:
js
const entries = await strapi.entityService.findMany('api::article.article', {
populate: ['componentA', 'relationA'],
})
高级填充
可以传递一个对象以进行更高级的填充:
js
const entries = await strapi.entityService.findMany('api::article.article', {
populate: {
relationA: true,
repeatableComponent: {
fields: ['fieldA'],
filters: {},
sort: 'fieldA:asc',
populate: {
relationB: true,
},
},
},
})
可以使用 filters
参数 并选择或填充嵌套关系或组件来实现复杂填充:
js
const entries = await strapi.entityService.findMany('api::article.article', {
populate: {
relationA: {
filters: {
name: {
$contains: 'Strapi',
},
},
},
repeatableComponent: {
fields: ['someAttributeName'],
sort: ['someAttributeName'],
populate: {
componentRelationA: true,
},
},
},
})
填充片段
处理多态数据结构(动态区域、多态关系等)时,可以使用填充片段来更好地确定填充策略。
js
const entries = await strapi.entityService.findMany('api::article.article', {
populate: {
dynamicZone: {
on: {
'components.foo': {
fields: ['title'],
filters: { title: { $contains: 'strapi' } },
},
'components.bar': {
fields: ['name'],
},
},
},
morphAuthor: {
on: {
'plugin::users-permissions.user': {
fields: ['username'],
},
'api::author.author': {
fields: ['name'],
},
},
},
},
})