Define Query Functions
Blitz queries are plain, asynchronous Javascript functions that always run on the server.
1. Queries must be inside a queries
folder. All of the following are valid:
app/queries/getProject.ts
app/projects/queries/getProject.ts
app/admin/projects/queries/getProject.ts
2. Queries must export a function as the default export
You can write any normal Node.js code here, including database access and fetching from third-party APIs.
Arguments
input: any
- The first argument is anything you need for your query. There are no special requirements.
ctx: Record<any, unknown>
- This context object is automatically provided by Blitz at run time. This is used by HTTP Middleware to provide data or functions to your query. For example, authentication middleware can provide
ctx.session
with all the data about the current user session.
- This context object is automatically provided by Blitz at run time. This is used by HTTP Middleware to provide data or functions to your query. For example, authentication middleware can provide
Example Query
// app/products/queries/getProduct.tsximport db, {FindOneProjectArgs} from "db"type GetProjectInput = {where: FindOneProjectArgs["where"]}export default async function getProject({where}: GetProjectInput, ctx: Record<any, unknown> = {}) {// Can do any processing, fetching from other APIs, etcconst project = await db.project.findOne({where})return project}
We automatically alias the root of your project, so import db from 'db'
is importing <project_root>/db/index.ts
Next,
read these docs to see how to use these queries in your components.