Help with GROQ query for retrieving references in block content
12 replies
Last updated: Feb 9, 2021
T
Any GROQ experts (probably don’t even have to be an expert!) around who could help a newbie out with a query question? I have a bunch of references in my block content and I am unable to get them all ☹️
Feb 9, 2021, 8:35 AM
T
This sort of thing?
const homepageQuery = `//groq *[_type == "homepage"][0] { ..., blocks[] { ..., posts[] { ..., post-> } } } `;
Feb 9, 2021, 8:36 AM
T
That gets all the post objects referenced from a posts[] array in my document.
Feb 9, 2021, 8:37 AM
T
Normal blocks are rendering just fine, but I am unable to render them AND get a hold of the buildingblock-references
0: {_key: "571c17e5d4d2", _type: "block", children: Array(1), markDefs: Array(0), style: "h2"} 1: {_key: "deffe7dcdb0a", _type: "block", children: Array(1), level: 1, listItem: "number", …} 2: {_key: "9e355d4baab8", _type: "block", children: Array(1), level: 2, listItem: "number", …} 3: {_key: "f52de8ccd592", _type: "block", children: Array(1), level: 1, listItem: "number", …} 4: {_key: "0ce7a53656c5", _type: "block", children: Array(1), level: 2, listItem: "number", …} 5: {_key: "5b0104c3c7e4", _type: "block", children: Array(1), level: 2, listItem: "number", …} 6: {_key: "8fb2b9b448a8", _type: "block", children: Array(1), level: 1, listItem: "number", …} 7: {_key: "0e385b17e55d", _type: "block", children: Array(1), level: 2, listItem: "number", …} 8: {_key: "47d9f8e5b64e", _type: "inlinePeople", peopleRef: Array(3), title: "Meet the team"} 9: {_key: "fd2ee0ce98a6", _ref: "f0954de0-3a3b-4ea1-901c-1f2850493532", _type: "buildingblock"} 10: {_key: "9a25a1d9a9ba", _ref: "8efd8242-bd4d-4d55-a7e1-af7178a6db57", _type: "buildingblock"} 11: {_key: "97844e8e1a61", _type: "block", children: Array(1), markDefs: Array(0), style: "normal"} 12: {_key: "4a1b7b529a6f", _type: "block", children: Array(1), markDefs: Array(0), style: "h2"} 13: {_key: "a08140c8bf86", _type: "block", children: Array(1), markDefs: Array(0), style: "normal"} 14: {_key: "762a6569ec0b", _type: "block", children: Array(2), level: 1, listItem: "number", …} 15: {_key: "5c4e40b23a94", _type: "block", children: Array(2), level: 1, listItem: "number", …} 16: {_key: "56205fc3075d", _type: "block", children: Array(2), level: 1, listItem: "number", …} 17: {_key: "5c99568385ef", _type: "block", children: Array(1), markDefs: Array(0), style: "h3"} 18: {_key: "f72092918e98", _type: "block", children: Array(1), level: 1, listItem: "bullet", …} 19: {_key: "d186ce9b79df", _type: "block", children: Array(1), level: 2, listItem: "bullet", …} 20: {_key: "7ba3cb37b16c", _type: "block", children: Array(1), level: 2, listItem: "bullet", …} 21: {_key: "bb98c7669e24", _type: "block", children: Array(4), markDefs: Array(0), style: "normal"} 22: {_key: "b2f689d44481", _type: "block", children: Array(2), markDefs: Array(0), style: "normal"} 23: {_key: "cddb325863d1", _ref: "1e71f787-078b-4132-b06e-b205daba028d", _type: "buildingblock"} 24: {_key: "3bcb742b5d77", _type: "block", children: Array(1), markDefs: Array(0), style: "normal"}
Feb 9, 2021, 8:37 AM
T
user L
yeah something like that. Currently my query (not yealding results) is looking like this:Edit: not yealding
desired result as far as my references go
*[ slug.current == $slug][0]{ ..., body[] { ..., buildingblocks->, inlinePeople { ..., peopleRef[]-> } } }
buildingblocksis
type: reference
inlinePeopleis
type: objectcontaining
peopleRefwhich is an array of references
Feb 9, 2021, 8:58 AM
T
None of your references are working?
Feb 9, 2021, 9:02 AM
T
If I change the query to
then my buildingblock-references are working, but nothing else is returned, just empty objects
*[ slug.current == $slug][0]{ ..., body[]->{ ..., buildingblocks->, inlinePeople { ..., peopleRef[]-> } } }
Feb 9, 2021, 9:06 AM
T
If someone wants to help it would be good for them to see your schema.
Feb 9, 2021, 9:07 AM
T
You need to expand the person reference.
blockContent[] { ..., inlinePeople[] { ..., peopleRef[] { ..., person-> } } }
Feb 9, 2021, 9:19 AM
T
Hm. Still can’t get the working.
Somehow this worked for outputting all general blocks +
Somehow this worked for outputting all general blocks +
buildingblocks
body[] { ..., _type=="buildingblock"=>^->, inlinePeople[] { ..., peopleRef[] { ..., person-> } } } }
Feb 9, 2021, 9:52 AM
T
is body an array of blockContent ?
Feb 9, 2021, 9:53 AM
T
edit: no sorry, I’m confusing you.it
is the blockcontent
is the blockcontent
name: 'body', type: 'blockContent'
Feb 9, 2021, 9:54 AM
T
so this gave me what I was afterIf someone would care to explain to me what I’m doing differently here, I’d highly appreciate it
body [] { ..., _type=='inlinePeople' => { peopleRef[]-> }, _type=='buildingblock'=>^-> }
Feb 9, 2021, 12:02 PM
Sanity– build remarkable experiences at scale
Sanity is a modern headless CMS that treats content as data to power your digital business. Free to get started, and pay-as-you-go on all plans.