メインコンテンツにスキップ

MongoDB

データベースに接続し、データベースアクセス用の Prisma Client を生成することで、既存の Node.js または TypeScript プロジェクトに Prisma ORM を追加する方法を学びます。以下のチュートリアルでは、Prisma CLIPrisma Client、および Prisma Introspection を紹介します。

ヒント

Mongoose から Prisma ORM に移行する場合は、Mongoose からの移行ガイド を参照してください。

前提条件

このガイドを正常に完了するには、以下が必要です。

  • Node.js がマシンにインストールされていること (公式にサポートされているバージョンについては、システム要件 を参照してください)

  • レプリカセット構成の MongoDB 4.2 以降のサーバーへのアクセス。MongoDB Atlas の使用をお勧めします。

    警告

    MongoDB データベースコネクタは、ネストされた書き込みをサポートするためにトランザクションを使用します。トランザクションには、レプリカセット 構成が必要です。レプリカセットをデプロイする最も簡単な方法は、Atlas を使用することです。無料で始めることができます。

データベースの 接続 URL (認証クレデンシャルを含む) を手元に用意してください!データベースサーバーを実行しておらず、Prisma ORM を試してみたい場合は、クイックスタート を確認してください。

正確なバージョンの要件については、システム要件 を参照してください。

Prisma ORM のセットアップ

最初の手順として、package.json ファイルが含まれているプロジェクトディレクトリに移動します。

次に、Prisma CLI を開発依存関係としてプロジェクトに追加します。

npm install prisma --save-dev
注意

プロジェクトに package.json ファイルを含む複数のディレクトリ (例: frontendbackend など) が含まれている場合、Prisma ORM は特に API/バックエンド層での使用を想定して設計されていることに注意してください。Prisma をセットアップするには、関連する package.json ファイルを含む適切なバックエンドディレクトリに移動し、そこで Prisma を構成します。

これで、npx をプレフィックスとして付けて Prisma CLI を呼び出すことができます。

npx prisma
情報

別のパッケージマネージャーを使用して Prisma ORM をインストールする方法については、インストール手順 を参照してください。

次に、次のコマンドを使用して Prisma Schema ファイルを作成して、Prisma ORM プロジェクトをセットアップします。

npx prisma init --datasource-provider mongodb --output ../generated/prisma

このコマンドは、いくつかの処理を実行します。

  • prisma という名前の新しいディレクトリを作成し、その中に schema.prisma というファイルを作成します。このファイルには、データベース接続変数とスキーマモデルを含む Prisma Schema が含まれています。
  • datasource を次のように設定します。MongoDBおよび出力をそれぞれカスタムの場所に設定します。
  • プロジェクトのルートディレクトリに .env ファイル を作成します。これは、環境変数 (データベース接続など) を定義するために使用されます。
バージョン管理を使用していますか?

git などのバージョン管理を使用している場合は、生成されたクライアントをアプリケーションから除外するために、.gitignore に行を追加することをお勧めします。この例では、generated/prisma ディレクトリを除外します。

.gitignore
generated/prisma/

prisma init で作成されたデフォルトのスキーマは、provider として PostgreSQL を使用していることに注意してください。datasource-provider オプションでプロバイダーを指定しなかった場合は、datasource ブロックを編集して mongodb プロバイダーを使用する必要があります。

prisma/schema.prisma
datasource db {
provider = "mongodb"
url = env("DATABASE_URL")
}