クイックスタート · ウェブサイト · ドキュメント · 例 · ブログ · Discord · Twitter
Prisma ORM は、次のツールで構成される次世代 ORMです。
Prisma Client : Node.js および TypeScript 用の自動生成されたタイプセーフなクエリ ビルダー
Prisma Migrate : 宣言型データモデリングおよび移行システム
Prisma Studio : データベース内のデータを表示および編集するための GUI
Prisma Client は、任意のNode.js または TypeScript バックエンド アプリケーション (サーバーレス アプリケーションやマイクロサービスを含む) で使用できます。これには、REST API、GraphQL API、gRPC API、またはデータベースを必要とするその他の API を使用できます。
Prisma ORM で使用するデータベースが必要な場合は、Prisma Postgres を確認してください。
Prisma ORM は、次の Prisma 製品を使用してさらに拡張できます。
Prisma Accelerate: スケーラブルな接続プーリングを備えたグローバル データベース キャッシュ
Prisma Pulse: タイプセーフなサブスクリプションを使用したリアルタイム データベース イベント
Prisma Optimize: AI を活用したクエリの最適化とパフォーマンスの洞察
Prisma Studio: データベース内のデータのビジュアル エディター
Prisma を使い始める最も早い方法は、クイックスタート ガイドに従うことです。次の 2 つのデータベースのいずれかを選択できます。
Prisma Postgres
SQLite
すでに独自のデータベースをお持ちの場合は、次のガイドに従うことができます。
既存のプロジェクトに Prisma を追加する
Prisma を使用して新しいプロジェクトを最初からセットアップする
このセクションでは、Prisma ORM の仕組みとその最も重要な技術コンポーネントの概要を説明します。より詳細な紹介については、Prisma のドキュメントを参照してください。
Prisma ツールキットのツールを使用するすべてのプロジェクトは、Prisma スキーマ ファイルから始まります。 Prisma スキーマを使用すると、開発者は直観的なデータ モデリング言語でアプリケーション モデルを定義できます。また、データベースへの接続も含まれており、ジェネレーターも定義されています。
// データ ソースdatasource db { Provider = "postgresql" url = env("DATABASE_URL")}// Generatorgenerator client { Provider = "prisma-client-js"}// データ モデルmodel Post { id Int @id @default(autoincrement( )) title 文字列 content 文字列? 公開ブール値 @default(false) 作成者 ユーザー? @relation(フィールド: [authorId], 参照: [id]) authorId Int?}model User { id Int @id @default(autoincrement()) email String @unique name String? 投稿 投稿[]}
このスキーマでは、次の 3 つを構成します。
データ ソース: データベース接続を指定します (環境変数経由)
Generator : Prisma Client を生成することを示します
データ モデル: アプリケーション モデルを定義します。
このページでは、データ モデルに焦点を当てます。データ ソースとジェネレーターの詳細については、それぞれのドキュメント ページをご覧ください。
データ モデルはモデルのコレクションです。モデルには 2 つの主要な機能があります。
基礎となるデータベース内のテーブルを表す
Prisma Client API でのクエリの基盤を提供します。
データ モデルを Prisma スキーマに「取り込む」ための 2 つの主要なワークフローがあります。
データベースのイントロスペクションからデータモデルを生成する
データ モデルを手動で作成し、Prisma Migrate を使用してデータベースにマッピングする
データ モデルが定義されたら、定義されたモデルに対する CRUD やその他のクエリを公開する Prisma クライアントを生成できます。 TypeScript を使用している場合は、すべてのクエリに対して完全なタイプ セーフティが得られます (モデルのフィールドのサブセットのみを取得する場合でも)。
Prisma Client を使用する場合の最初のステップは、npm パッケージをインストールすることです。
npm install @prisma/client
このパッケージをインストールすると、Prisma スキーマを読み取り、Prisma Client コードを生成するprisma generate
コマンドが呼び出されることに注意してください。コードは、node_modules/@prisma/ node_modules/@prisma/client/index.d.ts
によってエクスポートされる、 node_modules/.prisma/client
に配置されます。
データ モデルを変更した後、Prisma Client を手動で再生成して、 node_modules/.prisma/client
内のコードが確実に更新されるようにする必要があります。
npx prisma generate
「Prisma クライアントの生成」の詳細については、ドキュメントを参照してください。
Prisma クライアントが生成されたら、コードにインポートしてデータベースにクエリを送信できます。セットアップコードはこんな感じです。
次のように Prisma Client をインポートしてインスタンス化できます。
import { PrismaClient } from '@prisma/client'const prisma = new PrismaClient()
または
const { PrismaClient } = require('@prisma/client')const prisma = new PrismaClient()
これで、生成された Prisma Client API を介してクエリの送信を開始できるようになりました。いくつかのサンプル クエリを次に示します。すべての Prisma Client クエリは、プレーンな古い JavaScript オブジェクトを返すことに注意してください。
利用可能な操作の詳細については、Prisma Client ドキュメントを参照するか、このデモ ビデオ (2 分) をご覧ください。
User
レコードを取得します// `async` 内で実行 functionconst allUsers = await prisma.user.findMany()
User
オブジェクトにposts
関係を含めます// `async` 内で実行 functionconst allUsers = await prisma.user.findMany({ include: { jobs: true },})
"prisma"
含むすべてのPost
レコードをフィルタリングする// `async` 内で実行 functionconst filteredPosts = await prisma.post.findMany({ where: { OR: [{ title: { contains: 'prisma' } }, { content: { contains: 'prisma' } }], } 、})
User
と新しいPost
レコードを作成します。// `async` 内で実行 functionconst user = await prisma.user.create({ data: { name: 'Alice', email: '[email protected]', photos: { create: { title: 'Prisma に参加しましょう2021 日' }, }, },})
Post
レコードを更新する// `async` 内で実行 functionconst post = await prisma.post.update({ where: { id: 42 }, data: {published: true },})
TypeScript を使用する場合、このクエリの結果は静的に型付けされるため、存在しないプロパティに誤ってアクセスすることがなくなります (また、タイプミスはコンパイル時に検出されます)。 Prisma Client の生成されたタイプの活用について詳しくは、ドキュメントの「生成されたタイプの高度な使用法」ページをご覧ください。
Prisma には、熱心なアプリケーション開発者の大規模で協力的なコミュニティがあります。 Discord とここ GitHub で参加できます。
Prisma で何か素晴らしいものを構築しましたか? ? Readme や Web サイトに最適なこれらのバッジを使って自慢しましょう。
[![Made with Prisma](http://made-with.prisma.io/dark.svg)](https://prisma.io)
[![Made with Prisma](http://made-with.prisma.io/indigo.svg)](https://prisma.io)
報告すべきセキュリティ問題がある場合は、[email protected] までご連絡ください。
GitHub のprisma
リポジトリで、Prisma 関連のトピックについて質問したりディスカッションを開始したりできます。
?質問する
エラー メッセージが表示された場合、または問題が発生した場合は、必ずバグ レポートを作成してください。ドキュメントには、バグ レポート (追加のデバッグ出力を含めるなど) を作成するためのベスト プラクティスが記載されています。
?バグレポートを作成する
現在 Prisma に特定の機能がない場合は、必ずロードマップをチェックして、将来的にその機能がすでに計画されているかどうかを確認してください。
ロードマップ上の機能が GitHub の問題にリンクされている場合は、必ず ? を残してください。問題に対する反応、できれば機能についての意見をコメントしてください。
?機能リクエストを送信する
貢献ガイドラインと貢献者向けの行動規範を参照してください。
プリズマ テストのステータス:
生態系テストのステータス: