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