Docs Menu
Docs Home
/ / /
Node.js ドライバー

チュートリアル: プリズマとの統合

プリズマは、 Node.js用のオープンソースのオブジェクト関係マッパー(ORM)です。 JavaScriptと TypeScript の両方をサポートしていますが、読みやすく型安全なコードを書込むために TypeScript と併用されます。

スキーマは、コレクションのドキュメントの構造を定義することで、開発者が時間の経過とともにデータの不整合を回避するのに役立ちます。 MongoDB内ではデータベースレベルでスキーマを定義できますが、 プリズマ を使用するとアプリケーションレベルでスキーマを定義できます。 プリズマ Client はスキーマを認識しているため、 プリズマ Client を使用する開発者はクエリをオートコンプリートするアクセス権を持ちます。

一般に、まとめてアクセスされるデータは、 MongoDBコレクションにまとめて保存する必要があります。 プリズマ は、埋め込みドキュメントを使用してデータを保持することをサポートしています。関連データを別々のMongoDBコレクションに保存する必要があるユースケースでは、あるドキュメントの _idフィールドを別のドキュメントに含める必要があります。 プリズマ はこのプロセスを効率化し、データの参照整合性を維持すると同時に、この関連データの整理を支援します。

MongoDBでの効率的なデータ モデリングの詳細については、 MongoDB Serverマニュアルの $lookup 操作の削減 を参照してください。

このチュートリアルでは、次のアクションを実行する方法について説明します。

  • プリズマアプリケーションの例をダウンロード

  • プリズマスキーマを設定する

  • MongoDBデータベースを作成し、サンプルデータを入力する

  • 例アプリケーションをMongoDBと互換性を持たせるために

  • アプリケーションを実行する

1

このチュートリアルを開始する前に、次のコンポーネントが準備されていることを確認してください。

  • 構成されたクラスターを持つMongoDB Atlasアカウント。手順を表示するには、「 Atlas を使い始める」ガイドを参照してください。

  • Node.js v16.20.1以降に更新します。

2

プリズマ例リポジトリから例アプリケーションを複製またはダウンロードします。

この例では、 SQLiteデータベースを使用する単純なブログ コンテンツ管理プラットフォームです。次の手順では、SQLite の代わりにMongoDBを使用するようにアプリケーションを変更します。

3

例アプリケーションディレクトリ内の 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 @id @default(auto()) @map("_id") @db.ObjectId
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
title String
content String?
published Boolean @default(false)
viewCount Int @default(0)
author User @relation(fields: [authorId], references: [id])
authorId String @db.ObjectId
}
model User {
id String @id @default(auto()) @map("_id") @db.ObjectId
email String @unique
name String?
posts Post[]
}

このスキーマは、 MongoDBデータベース内に個別の User コレクションと Post コレクションを定義します。各 Post には User への参照が含まれています。

これらの変更を加えたら、ターミナルのプロジェクトディレクトリに移動し、次のコマンドを実行して必要な依存関係をインストールし、スキーマを生成します。

npm install
npx prisma generate

注意

スキーマにさらに変更を加える場合、変更を有効にするには npx prisma generate コマンドを再実行する必要があります。

4

データベースにサンプルデータを入力するには、次のコマンドを実行中例プロジェクト内の prisma/seed.tsファイルを実行します。

npx prisma db seed

これにより、schema.prismaファイルで定義されているように User コレクションと Post コレクションが作成され、サンプルデータが入力されます。

5

例プロジェクトの srcディレクトリに移動します。 pages/api/post/[id].ts ファイルと pages/api/publish/[id].ts ファイルで、Number(postId) のすべてのインスタンスを postId に置き換えます。これが必要になるのは、スキーマ内の id フィールドが Int ではなく String 型になっているためです。

6

アプリケーションを起動するには、プロジェクトディレクトリから次のコマンドを実行します。

npm run dev

アプリケーションを表示および実行するには、ウェブ ブラウザで http://localhost:3000 に移動します。アプリケーションを使用して、ブログ投稿を作成、下書き、公開、削除できます。 APIルートの定義は、例プロジェクトの pages/api フォルダーで参照できます。

プリズマの詳細については、 プリズマ のドキュメント を参照してください。

このチュートリアルのアプリケーションの完全なバージョンを表示およびダウンロードするには、 presma-mongodb-nextjs-example GitHubリポジトリ を参照してください。

戻る

Mongooseを使い始める

項目一覧