クエリリゾルバ
Blitzクエリは、サーバー上でのみ実行される非同期のプレーンなJavaScript関数です。
queries フォルダの中にある必要があります。以下のすべてが有効です。app/queries/getProject.tsapp/projects/queries/getProject.tsapp/admin/projects/queries/getProject.tsdefault export でエクスポートする必要があります。クエリにはデータベースへのアクセスやサードパーティAPIのフェッチなど、通常のNode.jsコードを書くことができます。
input: any
ctx: Ctx
ctx.session で提供します。// app/products/queries/getProduct.tsx
import { Ctx } from "blitz"
import db from "db"
import * as z from "zod"
const GetProject = z.object({
id: z.number(),
})
export default async function getProject(
input: z.infer<typeof GetProject>,
ctx: Ctx
) {
// Validate the input
const data = GetProject.parse(input)
// Require user to be logged in
ctx.session.$authorize()
const project = await db.project.findOne({ where: { id: data.id } })
// Can do any processing, fetching from other APIs, etc
return project
}プロジェクトのルートは自動的にエイリアスされるので、import db from 'db' は <project_root>/db/index.ts をインポートすることになります。
次に、これらのクエリをコンポーネントで使用する方法については、Use Queriesをお読みください。