TECH BLOG

Mutation Resolvers - Blitz.js日本語訳ドキュメント

2022-08-15 19:08:37 +09:00

Blitz.jsReactJavaScript

Mutation Resolvers

ミューテーションリゾルバ

Blitzミューテーションは、サーバー上でのみ実行される非同期のプレーンなJavaScript関数です。

  1. ミューテーションは mutations フォルダの中にある必要があります。以下のすべてが有効です。
  • app/mutations/createProject.ts
  • app/projects/mutations/createProject.ts
  • app/admin/projects/mutations/createProject.ts
  1. ミューテーションは関数を default export でエクスポートする必要があります。

ミューテーションにはデータベースへのアクセスやサードパーティAPIのフェッチなど、通常のNode.jsコードを書くことができます。

引数

  • input: any
    • 第1引数には、ミューテーションに必要なものを何でも渡せます。特別な要求はありません。
  • ctx: Ctx
    • このコンテキストオブジェクトは、実行時に Blitz から自動的に提供されます。これは、HTTPミドルウェアがデータや関数をミューテーションに提供する際に使用されます。たとえば、認証ミドルウェアは現在のユーザーセッションに関するすべてのデータをctx.session で提供します。

Example Mutation

// 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をお読みください。

© 2020 SEMI