🎤 Builder Talk: The Story Behind Lady Gaga’s Digital Experience – Register now

Troubleshooting a groq query with a reference in Sanity.io

26 replies
Last updated: Nov 12, 2021
Good morning everyone. I have a groq query with a reference that works in the 'vision' tab, but not in my code for some reason;
  *[_type == "page" && slug.current == 'values-and-beliefs'] {
    blocks[] {"slug": link->slug.current, ...},
    ...
  }

link
here is a
reference
and I'm trying to expand it out. In Vision, I can see a new field called
slug
with the value of whatever the reference is (
about
,
news
, etc), but in my code I don't see the same field
Using Next
Nov 8, 2021, 8:55 AM
hey nice to see you’re using Next now! Re: difference between vision & code, check for these:• Are you querying against the same API version? (e.g.
v1
vs.
2021-03-25
)• Same dataset?
• On vision, drafts can show up in query results while on the frontend you’d need to set a API token for the Sanity client. Are you looking at the same document on both vision & your frontend?
Nov 8, 2021, 9:06 AM
• I'm pretty sure the api is the same but how can I check? My sanity config is using a date I set a few weeks ago• Same dataset definitely
• All the documents are published so they shouldn't be drafts
Nov 8, 2021, 7:53 PM
Thanks for the reply
user G
sorry it took me awhile to respond, had some bigger issues I had to jump on instead 😓
Nov 8, 2021, 7:54 PM
I confirmed the version is
2021-10-29
but how can I confirm this is the same API version I'm querying against?
Nov 9, 2021, 8:23 AM
If that’s what’s returned from
client
, that’s the version of the API it’s using when it queries.
If you mean the version you’re querying against in Vision, that’s set via the dropdown in the top-left. You can choose Other and then enter
2021-10-29
to match them identically.
If I’ve misunderstood please let me know.
Nov 9, 2021, 3:58 PM
If that’s what’s returned from
client
, that’s the version of the API it’s using when it queries.
If you mean the version you’re querying against in Vision, that’s set via the dropdown in the top-left. You can choose Other and then enter
2021-10-29
to match them identically.
If I’ve misunderstood please let me know.
Nov 9, 2021, 3:58 PM
No that sounds right Geoff but I'm not sure it ultimately helps me solve the original problem
Nov 9, 2021, 4:00 PM
Thanks for the reply of course
Nov 9, 2021, 4:00 PM
My reference expands in Vision, but not in my code when I
console.log()
the returned data
Nov 9, 2021, 4:01 PM
You’re right—it doesn’t. That said, now that we know it’s not a version issue, we can take a look back at the original issue.
What are you seeing returned from that query on your front end?
Nov 9, 2021, 5:51 PM
So regarding the data mismatch between the code and Vision, I get this when I run the query in Vision:
Nov 12, 2021, 10:27 AM
But I get this in the code (note the key is the same, but it's missing the 'slug' parameter)
Nov 12, 2021, 10:27 AM
user A
apologies for the delayed response
Nov 12, 2021, 10:27 AM
I tried a whole other query just to see if I could get the results another way. Again this works in Vision but not in the code itself;
    *[_type == "page" && slug.current == $slug] {
      blocks[_type match 'sectionMarker']{'slug': link->slug.current, ...},
      ...
    }
Nov 12, 2021, 11:00 AM
Is there any way of looking up/resolving a
_ref
using JavaScript instead of groq? Something like
resolveRef(_ref)
which would return a slug or something?
Nov 12, 2021, 11:02 AM
Is there any way of looking up/resolving a
_ref
using JavaScript instead of groq? Something like
resolveRef(_ref)
which would return a slug or something?
Nov 12, 2021, 11:02 AM
Further details on this... I realised that my API version in 'Vision' was set to 'v1' — I just set it to 'v2021-03-25' and now the query above isn't working. So
user A
and
user G
were correct, it WAS an API version issue (sorry both!) ...
The question now is what is the correct query?
Nov 12, 2021, 2:41 PM
Further details on this... I realised that my API version in 'Vision' was set to 'v1' — I just set it to 'v2021-03-25' and now the query above isn't working. So
user A
and
user G
were correct, it WAS an API version issue (sorry both!) ...
The question now is what is the correct query?
Nov 12, 2021, 2:41 PM
Got it 😂 what a rollercoaster...

    *[_type == "page" && slug.current == $slug] {
      blocks[_type == 'sectionMarker'] {
        'slug': link->slug.current,
        ...
      },
      ...,
    }
Nov 12, 2021, 2:52 PM
Hah! Glad you got it. You can also do this to handle multiple types:
blocks[] {
  ...,
  _type == "sectionMarker" => {
    "slug": link->slug.current,
  },
  _type == "somethingElse" => { ... }
}
edit: added missing
[]
Nov 12, 2021, 2:55 PM
Yeah that's neater, thanks Derek
Nov 12, 2021, 2:56 PM
I had to change it to
blocks[] {
but it worked
Nov 12, 2021, 3:01 PM
ah oops my bad — thanks for correcting that!
Nov 12, 2021, 3:02 PM
No problem! Easy for me when I can test it
Nov 12, 2021, 3:07 PM
No problem! Easy for me when I can test it
Nov 12, 2021, 3:07 PM
Hey, no problem! Glad you got it resolved in the end, and thanks (again) Derek for the support.
Nov 12, 2021, 4:27 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.

Was this answer helpful?

Related answers

Get more help in the community Slack

TopicCategoriesFeaturedRepliesLast Updated
Rendering nested block contentJan 18, 2021
GraphQL query resolving references on a _raw field in GatsbyMay 17, 2022
Error: unable to resolve image URL from source (undefined)Sep 11, 2022
Extracting referenced images from an object array in Sanity.ioMay 17, 2020
How to preview content inside a reference array in Sanity.ioAug 14, 2020
Hi, I need help with Iframe preview, I have a `route` schema with unique `slug` (`/lb/123`) and also I have `page` schema...Dec 21, 2020
Hi! How to add a doc via sanity client that has a *weak* reference? If I do this, it throws an error `key "weak" not allowed...Feb 2, 2021
How come images are returning with just a _ref in their assets?Feb 3, 2021
Troubleshooting reference fields in a Next.js Landing page templateMay 2, 2020
Query for finding un-referenced documents in Sanity.ioMay 10, 2020

Related contributions

Turbo Start Sanity
- Template

The battle-tested Sanity template that powers Roboto Studio's websites

Go to Turbo Start Sanity

Schema UI - Next.js Sanity Starter
- Template

A Next.js starter template with Next.js 15, Tailwind CSS, shadcn/ui, and Sanity CMS with Live Editing. Get production-ready React components with matching Sanity schemas and queries. Build dynamic pages faster while keeping full control over customization.

Serge Ovcharenko
Go to Schema UI - Next.js Sanity Starter

The Swaddle
- Made with Sanity

A new brand identity to represent a more mature company, to signify The Swaddle’s evolution from publisher to production house, combined with an easier to navigate platform that can surface multiple content types - drawing readers through The Swaddle’s content offering.

Nightjar
Go to The Swaddle