I have a collectionType page
with a dynamic-zone content
.
There are multiple (10+) components in content
that sometimes also include (repeatable-)components.
I want to get all pages
with all fields (for example: the component header
in content
with the fields: title
and subTitle
.)
v3-Implementation:
const pages = await strapi.services.page.find(
{
_limit: -1,
_sort: "updated_at:DESC",
},
[]
);
How is this done in v4?
All solutions I came across demand me to know what components are inside of content
.
Also: Will I still need to include _limit: -1
for +300 (or so) entries?
Hope somebody can enlighten me.
Cheers,
Olaf
I guess I found a for me (for the moment) good enough solution.
v4-Implementation:
const collectionType = 'api::page.page';
const allPages = await strapi.entityService.findMany(collectionType, {
fields: ["*"],
filters: { },
sort: { },
populate: {
// content [is the name of the dynamic zone in page]
content: {
populate: "*"
},
}
});
In my v4-test-project I have multiple components (one with multiple string-attributes, one with an image, one with a relation…) in the dynamic zone of page
.
For them the above implementation seems to work.
I hope this helps others. 
However if I want to include all fields of my relation (for example to another page
with its own content
dynamic zone) I need to adjust my implementation to:
...
populate: {
content: {
populate: {
// page [is the collectionType of the relation inside of the component in the dynamic zone in page]
page: {
populate: {
content: {
populate: "*"
}
}
}
}
}
}
...
but then I’m missing the fields of the components in the dynamic zone of my page
collectionType.
Is there a trick how I can achieve both?
Cheers,
Olaf