Builder content link
Builder public api key
60f9f6f2dd41464e9bc583d3c22ff12f
What are you trying to accomplish
Retrieve the entire content of a page in one query to builder.io
The page model is having a Reference to a Section (topBar
). The topBar
Section has data connected, an structured content model siteMap
.
When I get the page with get("page", { enrich: true })
, it brings correctly the topBar
model reference. However, the connected data in the topBar
content is not resolved, it stays in data.httpRequests
instead of appearing in data.state.siteMap
If I execute get("top-bar", ...)
it does bring the data evaluated in data.state.siteMap
.
(Please note I can do this second call and have this issue resolved, it’s just trying to do it in one shot
Screenshots or video link
none
Code stack you are integrating Builder with
NextJS, react
Reproducible code example
// This function is used by the page to get the sections to render
// from the builder.io API (CMS)
export async function getPageSections(paths: string[], useSingleCall:boolean = false ):Promise<PageSections> {
const pageModel = await builder.get("page", {
enrich: useSingleCall,
includeRefs: useSingleCall,
userAttributes: {
urlPath: "/" + (paths?.join("/") || ""),
},
}).toPromise();
if (pageModel?.data?.topBar.id) {
if (useSingleCall) {
return {
body: pageModel,
topBar: pageModel.data?.topBar?.value,
}
}
const topBar = await builder.get("top-bar", {
query: {
"id": pageModel.data.topBar.id
},
}).toPromise();
return {
body: pageModel,
topBar: topBar,
}
}
if (pageModel) {
return {
body: pageModel,
topBar: null,
}
}
// secondly, it might be a section only to be rendered
// this point is only reached when designing a section
const topBar = await builder.get("top-bar", {
userAttributes: {
urlPath: "/" + (paths?.join("/") || ""),
},
})
.toPromise();
return {
body: null,
topBar: topBar
}
}