Skip to main content

Query Parameters

Many queries have input parameters, such as $slug or $limit.

GroqD requires you to define these parameters before using them, using the .parameters method. This method has no runtime effects; it's only used for defining types.

Defining your parameters enables 2 great features:

  • Strongly-typed methods (eg. filterBy) can reference these parameters.
  • The parameters will be required when executing the query.

.parameters<Params>()

Defines the names and types of parameters that must be passed to the query.

const productsBySlug = (
q.parameters<{ slug: string }>()
.star.filterByType("product")
// You can now reference the $slug parameter:
.filterBy("slug.current == $slug")
);

These parameters are now required by runQuery:

const results = await runQuery(
productsBySlug,
// The 'slug' parameter is required:
{ parameters: { slug: "123" } }
)