๐Ÿ”ฎ Sanity Create is here. Writing is reinvented. Try now, no developer setup

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:
Jun 4, 2020, 6:14 PM
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",
 [{"_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:

  _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
unfurls the references, but leave other blocks null, while
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.

  _type == 'orderReceiptPlaceholderRef' => {
should do it
Jun 5, 2020, 7:48 AM
It might be that you need to project the reference like so:
  _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โ€“ 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?