Overview
The root q
object
The q
object (created in the Configuration section) has 3 main purposes:
Start a query chain
All query chains start with either q.star
or q.project(...)
.
All methods of a query chain return a new chainable instance of GroqBuilder
. Every chain is immutable, and can be reused if needed.
See the Filters and Projections documentation for more details.
Provide Zod's validation functions
The root q
object has shortcuts for Zod's validation functions, like q.string()
and q.number()
. These are identical to zod.string()
and zod.number()
, and are added to the q
object for convenience.
See the Validation documentation for more details.
Create reusable fragments
You can also define reusable "projection fragments" using the q.fragment<T>()
method.
See the Fragments documentation for more details.
An example query
const top10ProductsQuery = (
q.star
.filterByType("product")
.order("price asc")
.slice(0, 10)
.project(sub => ({
title: q.string(),
price: q.number(),
images: sub.field("images[]").deref().project({
width: q.number(),
height: q.number(),
url: q.string(),
})
}))
);