Overview
プリズマは、 Node.js用のオープンソースのオブジェクト関係マッパー(ORM)です。 JavaScriptと TypeScript の両方をサポートしていますが、読みやすく型安全なコードを書込むために TypeScript と併用されます。
Schemas
スキーマは、コレクションのドキュメントの構造を定義することで、開発者が時間の経過とともにデータの不整合を回避するのに役立ちます。 MongoDB内ではデータベースレベルでスキーマを定義できますが、 プリズマ を使用するとアプリケーションレベルでスキーマを定義できます。 プリズマ Client はスキーマを認識しているため、 プリズマ Client を使用する開発者はクエリをオートコンプリートするアクセス権を持ちます。
データモデリング
一般に、まとめてアクセスされるデータは、 MongoDBコレクションにまとめて保存する必要があります。 プリズマ は、埋め込みドキュメントを使用してデータを保持することをサポートしています。関連データを別々のMongoDBコレクションに保存する必要があるユースケースでは、あるドキュメントの _id
フィールドを別のドキュメントに含める必要があります。 プリズマ はこのプロセスを効率化し、データの参照整合性を維持すると同時に、この関連データの整理を支援します。
MongoDBでの効率的なデータ モデリングの詳細については、 MongoDB Serverマニュアルの $lookup 操作の削減 を参照してください。
Tutorial
このチュートリアルでは、次のアクションを実行する方法について説明します。
プリズマアプリケーションの例をダウンロード
プリズマスキーマを設定する
MongoDBデータベースを作成し、サンプルデータを入力する
例アプリケーションをMongoDBと互換性を持たせるために
アプリケーションを実行する
例アプリケーションをダウンロード
プリズマ例リポジトリから例アプリケーションを複製またはダウンロードします。
この例では、 SQLiteデータベースを使用する単純なブログ コンテンツ管理プラットフォームです。次の手順では、SQLite の代わりにMongoDBを使用するようにアプリケーションを変更します。
プリズマスキーマを設定する
例アプリケーションディレクトリ内の prisma/schema.prisma
ファイルに移動します。このファイルの datasource db
オブジェクトで、provider
フィールドを "mongodb"
に設定し、url
フィールドをAtlas 接続 URI に設定します。
同じファイルの User
モデルで、id
フィールドタイプを Int
から String
に変更し、デフォルト値を auto()
に設定します。 id
プロパティはMongoDB _id
フィールドにマッピングする必要があります。このプロパティのデータ型を ObjectId
に設定するようにプリズマを指示する必要があります。
Post
モデルで、User
モデルで実行したのと同じ変更を id
フィールドに実行します。また、authorId
フィールドタイプを Int
から String
に変更し、データ型をObjectId
に設定する必要があります。
schema.prisma
ファイルは次のようになります。
generator client { provider = "prisma-client-js" } datasource db { provider = "mongodb" url = "<your connection URI>" } model Post { id String (auto()) ("_id") .ObjectId createdAt DateTime (now()) updatedAt DateTime title String content String? published Boolean (false) viewCount Int (0) author User (fields: [authorId], references: [id]) authorId String .ObjectId } model User { id String (auto()) ("_id") .ObjectId email String name String? posts Post[] }
このスキーマは、 MongoDBデータベース内に個別の User
コレクションと Post
コレクションを定義します。各 Post
には User
への参照が含まれています。
これらの変更を加えたら、ターミナルのプロジェクトディレクトリに移動し、次のコマンドを実行して必要な依存関係をインストールし、スキーマを生成します。
npm install npx prisma generate
注意
スキーマにさらに変更を加える場合、変更を有効にするには npx prisma generate
コマンドを再実行する必要があります。
追加リソース
プリズマの詳細については、 プリズマ のドキュメント を参照してください。
このチュートリアルのアプリケーションの完全なバージョンを表示およびダウンロードするには、 presma-mongodb-nextjs-example GitHubリポジトリ を参照してください。