Watch a live product demo πŸ‘€ See how Sanity powers richer commerce experiences

Is there a GROQ Query where References in a PortableText Array of Blocks Are Also Resolved?

9 replies
Last updated: Jun 5, 2020
Hello! Is there some GROQ query where references in a PortableText array of blocks are also resolved? I haven't found a way to address them in my projection.
Jun 4, 2020, 1:05 PM
Hi there!
One way would be to use conditionals to check for block type, and resolve the references there. Take a look at the last example here:
https://www.sanity.io/docs/query-cheat-sheet#conditionals-64a36d80be73
Jun 4, 2020, 6:14 PM
Thanks
user J
! This looks like what we need. But we're still struggling to connect the dots πŸ™‚ We have an array of blocks and a custom reference type, like so:

{"_type": "block",
 "children":
 [{"_type": "span",
   "marks": [],
   "text": "Takk for din bestilling "}
  {"_ref": "0f65906e-05d1-48e6-a2cd-9a6414c874ec",
   "_type": "orderReceiptPlaceholderRef"}
  {"_type": "span", "marks": [], "text": "!"}],
 "markDefs": [],
 "style": "normal"}
It's not clear how to "point" (e.g.
->
) to inline the reference when it's just a member of the array:

children[]{
  ...,
  _type == 'orderReceiptPlaceholderRef' => {
    ->
  }
}

Jun 5, 2020, 7:23 AM
If that makes sense, heh
Jun 5, 2020, 7:23 AM
Specifically, the problem is that some children are references, others not. So
children[]->
unfurls the references, but leave other blocks null, while
children[]
include all children, but does not inline references 🀯
Jun 5, 2020, 7:41 AM
I this case you can use the
@
operator which refers to the root value of the current scope.
So

children[]{
  ...,
  _type == 'orderReceiptPlaceholderRef' => {
    @->
  }
}
should do it
Jun 5, 2020, 7:48 AM
It might be that you need to project the reference like so:
children[]{
  ...,
  _type == 'orderReceiptPlaceholderRef' => {
    'referenceOrWhateverYouWantToCallIt': @->
  }
}
Jun 5, 2020, 8:03 AM
hah, learned something new!
Jun 5, 2020, 9:15 AM
Last one worked, thanks!
Jun 5, 2020, 9:21 AM
πŸ‘
Jun 5, 2020, 9:57 AM

Sanity.io – build remarkable experiences at scale

Sanity is a customizable solution that treats content as data to power your digital business. Free to get started, and pay-as-you-go on all plans.

Categorized in

Related answers

Get more help in the community Slack

TopicCategoriesFeaturedRepliesLast Updated
After adding the subtitle and running this code npm run graphql-deploy It does nothingSep 15, 2020
how to limit a reference to just one entry in Studio reference input side versus the default as-many-entries-as-you-fill-in-an-array...Sep 18, 2020
Is it possible to fetch more than one "_type" using GROQ?Nov 2, 2020
I want to add a view with the Structure builder (S.view.component) where I list similar documents based on the title. What...Sep 23, 2020
Is there a structure builder example where the format of each preview for the document list is modified?Feb 3, 2021
I have an array of references to a country schema type but it always just returns NULL values for meJan 30, 2021
Hi, I need help with a query for getting the url of an image asset. Here is what I've been trying, but I only get the _ref...Dec 1, 2020
Sanity UI looks brilliant :smiley: Is something like the current date picker possible at the moment? I’m not sure if anicon...Dec 21, 2020
Hey everyone. I have been coding and may have potentially accidentally deleted something. Does anyone know how to resolve...Dec 26, 2020
Hello everyone and happy new year :raised_hands::skin-tone-2:, I have a problem with outputting Portable Text :disappointed:...Jan 1, 2021

Related contributions

Clean Next.js + Sanity app
- Template

Official(made by Sanity team)

A clean example of Next.js with embedded Sanity ready for recomposition.

Cody Olsen
Go to Clean Next.js + Sanity app

Blog with Built-in Content Editing
- Template

Official(made by Sanity team)

A Sanity-powered blog with built-in content editing and instant previews.

Go to Blog with Built-in Content Editing