👀 See Sanity in action: Watch product demo now →

How to Order and Specifically Select Multiple _Types in a Query

5 replies
Last updated: Mar 10, 2022
I have a pretty specific query I’m trying to call, the purpose of this query is to get the 4 most recent “hikes” and the 1 most recent blog “post”. My query looks like this:
*[_type in ["hikes", "post"]]{
  _type == "hikes" => {
    _createdAt,
    body,
    mainImage,
    number,
    people,
    slug,
    title,
    trailHiked -> {
        name,
        difficulty,
        distance,
        rating,
        trailType,
        location
    }
  },
  _type == "post" => {
    title,
    body,
    mainImage
  }
}
I’m currently using
this resource for selecting multiple types in a query, its working so far but how can I specify the 4 most recent hikes (assuming I use
[0…4]
somewhere) and the most recent post (
[0]
?)?
Mar 10, 2022, 11:12 PM
I think if I were in your situation, I'd use two separate projections wrapped in an object:
`{
  'hikes': *[_type == 'hike'][0...3]{
    _createdAt,
    body,
    mainImage,
    number,
    people,
    slug,
    title,
    trailHiked -> {
        name,
        difficulty,
        distance,
        rating,
        trailType,
        location
    }
  },
  'post': *[_type == 'post'][0]
}`
Mar 10, 2022, 11:28 PM
Oh thats great! I didnt know I could do that
Mar 10, 2022, 11:40 PM
Hmm my hikes portion comes back as an empty array
Mar 10, 2022, 11:44 PM
Hmm my hikes portion comes back as an empty array
Mar 10, 2022, 11:44 PM
ah nevermind it needed to be hikes
Mar 10, 2022, 11:45 PM

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