I am trying to retrive some data from nested object.
This is the consle.log() result:
console.log("bg data", data)
{
"pageLayouts": {
"data": [
{
"attributes": {
"title": "a title",
"layout": "home",
"backgroundImage": {
"data": [
{
"attributes": {
"alternativeText": "bg image",
"url": "image url",
"__typename": "UploadFile"
},
"__typename": "UploadFileEntity"
}
],
"__typename": "UploadFileRelationResponseCollection"
},
"__typename": "PageLayout"
},
"__typename": "PageLayoutEntity"
}
],
"__typename": "PageLayoutEntityResponseCollection"
}
}
What i tried:
const backgroundImage = attributes?.pageLayouts?.data?.attributes.backgroundImage.data?.attributes?.url
plz if anyone knows what i am missing here. Thanks
CodePudding user response:
Erhm, if console.log(data); outputs what you posted, then you should use data:
const backgroundImage = data?.pageLayouts?.data?.attributes.backgroundImage.data?.attributes?.url
CodePudding user response:
The data objects are Arrays but you are trying to read the properties as if it was just an object. You can still use unknown (?.) identifiers, you just need to do so on the array indices as such:
const backgroundImage = attributes?.pageLayouts?.data?.[0]?.attributes.backgroundImage.data?.[0]?.attributes?.url
Note the addition of ?.[0] to both data objects.

