TECH BLOG

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

2022-08-16 10:56:53 +09:00

Blitz.jsReactJavaScript

Query Resolvers

クエリリゾルバ

Blitzクエリは、サーバー上でのみ実行される非同期のプレーンなJavaScript関数です。

  1. クエリは queries フォルダの中にある必要があります。以下のすべてが有効です。
  • app/queries/getProject.ts
  • app/projects/queries/getProject.ts
  • app/admin/projects/queries/getProject.ts
  1. クエリは関数を default export でエクスポートする必要があります。

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

引数

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

Example Query

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

© 2020 SEMI