Issue with reference fields not returning expected data in GROQ query.
13 replies
Last updated: Oct 26, 2022
T
Hey! I am struggling with following reference fields when they are two arrays deep. I have this query:
I would expect that each of the industries (which are an array of references) would be returned with just the
*[_type == "landingPage" && slug.current == "get-started"][0]{ landingPageBuilder[] { _type == 'industries' => { industries[]->{title} }, ... } }
title. But I only get back the
_ref,
_key, and
_typewithout the title. Can anyone spot what I am doing wrong?
Oct 24, 2022, 3:37 PM
Hi Todd. To be sure it’s not overriding your conditional, could you please try moving the
…before the
_type == ‘industries’ => {line?
Oct 25, 2022, 2:20 AM
T
Ah you are right - it was the spread that was preventing it work! Thanks
user A
Oct 25, 2022, 8:21 AM
T
Hey
But this doesn't - so how might I get the rest of the fields in the roles[] array?
user A
So the spread seems to break a few things – for example this works:landingPageBuilder[] { _type == 'industries' => { industries[]->{title,summary,headline,icon}, ... }, _type == 'organisationalRoles' => { roles[]{ role->, }, } }
landingPageBuilder[] { _type == 'industries' => { industries[]->{title,summary,headline,icon}, ... }, _type == 'organisationalRoles' => { roles[]{ ..., // how do I make this work without breaking the role-> reference? role->, }, ..., } }
Oct 25, 2022, 9:27 AM
T
is this a bug, as by the docs it appears you should be able to use the spread operator to catch everything else (like an 'else' statement) for conditionals?
Oct 25, 2022, 9:33 AM
T
Hi
user A
I added this as an issue in the GROQ github considering it sounds like a bug of some kind? https://github.com/sanity-io/GROQ/issues/97 Oct 26, 2022, 10:00 AM
S
hello, could you please try this:
..., landingPageBuilder[] { ..., _type == 'industries' => { ..., industries[]->{title, summary, headline, icon}, }, _type == 'organisationalRoles' => { ..., roles[]{..,role->}, } }
Oct 26, 2022, 1:11 PM
S
(and I will answer your additional questions as soon as a get a bit breathing room, had a tight schedule for some pushes 😅 )
Oct 26, 2022, 1:12 PM
T
Ah that works,
user J
, thank you... But why? The only difference i can see is that the spread operator catch all is before the reference fields, not after?Oct 26, 2022, 2:57 PM
S
Its made by people who don’t love chaos 😉jup you basically say: we’re gonna need everything and then do …
Oct 26, 2022, 4:13 PM
T
ohh, I was thinking of them like 'else' statement - eg, custom functions for these elements, then after that, catch everything else.
Oct 26, 2022, 4:16 PM
Hi Todd. There’s some explanation here that I hope helps.
Oct 26, 2022, 4:17 PM
T
Thanks
user A
. I'm off for a much needed beer after a long day, but will read through that properly with a fresh mind tomorrow morning 🙂Oct 26, 2022, 4:21 PM
I noticed your note when you closed the issue, which essentially aligns with that link. Still worth a read, IMO, but in the meantime, enjoy that beer!
Oct 26, 2022, 4:23 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.