Prismaクライアントは、Prismaバインディングの代替としてアプリケーションのデータにアクセスするために使用できる自動生成ライブラリです。JavaScript、TypeScript、Flow、Goで利用できます。

⚠️ この記事は古くなっています。これは、現在非推奨となっているPrisma 1に関するものです。Prismaの最新バージョンについては、ドキュメンテーションをお読みください。⚠️
Prismaクライアント: Prismaバインディングの次の進化
PrismaはあなたのデータベースをGraphQL APIに変換します。このGraphQL APIは通常、フロントエンドアプリケーションによって直接消費されるのではなく、アプリケーションサーバーでのデータアクセスを簡素化するためのデータベース抽象化として使用されます(ORMに似ています)。
PrismaでGraphQLサーバーを実装する際、GraphQLサーバーのリゾルバーはPrismaバインディングとスキーマデリゲーションを使用してPrisma APIに接続します。
スキーマデリゲーションは、(
info
オブジェクトを使用して)着信リクエストを別のGraphQL APIに転送することでリゾルバーを実装する高度な方法です。
スキーマデリゲーションは強力でエレガントな概念ですが、高度なユースケースに最適です。Prismaをより柔軟で使いやすくするために、アプリケーションでPrismaのAPIを消費する新しい方法、Prismaクライアントを導入します。
より多くのユースケース: GraphQLサーバー、REST APIなどの構築
新しいPrismaクライアントは、Prismaバインディングと同様の目的を果たしますが、3つの大きな違いがあります。
- PrismaバインディングはGraphQLサーバー向けに設計されていますが、Prismaクライアントはより柔軟で、REST API、CLI、スクリプトなど、より多くのユースケースで使用できます。
- PrismaクライアントはPrismaツールチェーンの不可欠な部分です。
prisma.yml
で設定され、Prisma CLIで生成されます。 - Prismaクライアントはさまざまな言語で利用可能です。今日のプレビューリリースでは、JavaScript、TypeScript、Flow、Goで利用できます!
GraphQLサーバーでPrismaバインディングを使い続けることはできますか?
Prismaバインディングは、基盤となるPrisma APIにデリゲートすることでGraphQLリゾルバーを実装するための強力な方法であり続けています。現在のユースケースでPrismaバインディングがうまく機能している場合、新しいPrismaクライアントを使用するために実装を変更する必要はありません。
Prismaクライアントの生成
Prismaクライアントは、Prisma APIに接続するライブラリです。これはPrismaデータモデルに基づいて自動生成されるため、すべてのAPI操作とデータ構造を認識しています。
Prismaクライアントを生成するには、2つのことを行う必要があります。
prisma.yml
に新しいgenerate
プロパティを指定します(例:)
- Prisma CLIで新しい
prisma generate
コマンドを実行します。prisma.yml
とデータモデルから情報を読み取り、Prismaクライアントを生成します。これはPrisma 1.17-beta以降でのみ機能することに注意してください。
上記のコードはTypeScriptでクライアントを生成する方法を示しています。JavaScript、Flow、Goの場合は、generator
にjavascript-client
、flow-client
、go-client
の値をそれぞれ使用できます。
PrismaクライアントAPIの使用
PrismaクライアントAPIは、データモデルに基づいて生成され、各モデルのCRUD操作を公開します。
以下のすべてのコード例は、下記のデータモデルに基づいています。
新しいPrismaクライアントAPIの完全なドキュメンテーションはこちらで確認できます。
Prismaクライアントインスタンスのインポート
生成後、Prismaクライアントインスタンスをコードにインポートできます。
データの読み取り
Prismaバインディングはすべてのクエリをquery
フィールドを介して公開しますが、生成されたPrismaクライアントではクエリを直接呼び出すことができます。
これは、返されたUser
オブジェクトのすべてのスカラフィールドを返します。リレーションは、メソッドチェーン(fluent APIとも呼ばれます)を使用してエレガントにクエリできます。
上記のコードスニペットは、Prisma APIへの単一のリクエストに帰着し、Prismaの強力なクエリエンジンによってデータベースに対して解決されることに注意してください。
新しいPrismaクライアントAPIを使用しても、ネストされたデータをクエリするためにGraphQLを使用したり、高度なユースケースでスキーマデリゲーションを使用したりすることは可能です。
その他の例はドキュメンテーションを参照してください。
データの書き込み
クエリと同様に、ミューテーションもPrismaクライアントのトップレベルで公開されます。
複数の書き込み操作を単一のトランザクションで実行することもできます。
その他の例はドキュメンテーションを参照してください。
ボイラープレートなし: コード生成による型安全性
Prismaクライアントの主要な利点の1つは型安全性です。型安全性は生産性を高め、保守性を向上させ、リファクタリングを容易にし、優れた開発者体験をもたらします。
型安全なデータアクセスには、多くの手作業、ボイラープレートコードの記述、冗長な型定義が必要です。Prismaクライアントはコード生成を活用して、データモデルとクエリにカスタム型を提供します。
Prismaクライアントを試す
Prismaクライアントについてさらに学ぶには、新しいexamplesリポジトリをチェックするか、「Get Started」チュートリアルに従ってください。Slackでご意見をお聞かせください🙌
始める
次の投稿もお見逃しなく!
Prismaニュースレターに登録する