Overview
プリズマは、 Node.js用のオープンソースのオブジェクト関係マッパー(ORM)です。 JavaScriptとTypescript の両方をサポートしていますが、読み取り可能で型安全なコードを書込むためにTypescriptと主に使用されます。
Schemas
スキーマは、コレクションのドキュメントの構造を定義することで、開発者が時間の経過とともにデータの不整合を回避するのに役立ちます。MongoDB内ではデータベースレベルでスキーマを定義できますが、 プリズマ を使用するとアプリケーションレベルでスキーマを定義できます。 プリズマ Client はスキーマを認識しているため、 プリズマ Client を使用する開発者はクエリをオートコンプリートするアクセス権を持ちます。
データモデリング
一般に、まとめてアクセスされるデータは、 MongoDBコレクションにまとめて保存する必要があります。プリズマ は、埋め込みドキュメントを使用してデータを保持することをサポートしています。 関連データを別々のMongoDBコレクションに保存する必要があるユースケースでは、あるドキュメントの _idフィールドを別のドキュメントに含める必要があります。プリズマ はこのプロセスを効率化し、データの参照整合性を維持すると同時に、この関連データの整理を支援します。
MongoDBでの効率的なデータ モデリングの詳細については、 MongoDB Serverマニュアルの $lookup 操作の削減 を参照してください。
Tutorial
このチュートリアルでは、次のアクションを実行する方法について説明します。
プリズマアプリケーションの例をダウンロード
プリズマスキーマを設定する
MongoDBデータベースを作成し、サンプルデータを入力する
例アプリケーションをMongoDBと互換性を持たせるために
アプリケーションを実行する
前提条件を確認します
このチュートリアルを開始する前に、次のコンポーネントが準備されていることを確認してください。
構成されたクラスターを持つMongoDB Atlasアカウント。手順を表示するには、 「 MongoDBスタートガイド 」を参照してください。
Node.js v16.20.1以降に更新します。
例アプリケーションをダウンロード
プリズマ例リポジトリから例アプリケーションを複製またはダウンロードします。
この例では、 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リポジトリ を参照してください。