GROQ can be hard to grok. While GROQ is a really powerful tool, it can be a bit overkill for your most common Sanity operations. To make it easier to query sanity for your content, sanity-query-helper provides an API which might be easier to understand.
yarn add sanity-query-helper
Immutable. All functions are chainable (except for send) and return a new helper.
import SanityQueryHelper from "sanity-query-helper"
const sanityHelper = new SanityQueryHelper({
sanityOptions: {
projectId: "project-id",
dataset: "myDataSet",
useCdn: true
}
})
// Create query
// Filters
const filter = sanityHelper
.ofType("post")
.withFilter("releaseDate") // .compare("releaseDate", SanityQueryHelper.comparisons.greaterOrEqualTo, 1979)
.greaterOrEqualTo(1979)
.send()
.then(useMyData) // 👈 response from sanity
// Picks aka Projections
filter
.pick("title")
.send()
.then(useMyData) // 👈 response with projection
// Select
const select = projection
.select(0, 10)
.send()
.then(data => doStuff(data)) // 👈 response will have 10 first posts (if that many exists)
// Order by
select
.orderBy(releaseYear)
.send(orderedData => use(orderedData))