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

TypeScriptとMongoDBを使用してデータベースを接続

データベースを接続するには、Prismaスキーマのdatasourceブロックにあるurlフィールドを、データベースの接続URLに設定する必要があります。

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

この場合、url環境変数経由で設定されます。この環境変数は.envに定義されています(例ではMongoDB AtlasのURLを使用しています)。

.env
DATABASE_URL="mongodb+srv://test:test@cluster0.ns1yp.mongodb.net/myFirstDatabase"

ここで、接続URLを自身のデータベースを指すように調整する必要があります。

データベースの接続URLの形式は、使用するデータベースによって異なります。MongoDBの場合、以下のようになります(すべて大文字で表記されている部分は、特定の接続詳細のプレースホルダーです)。

mongodb://USERNAME:PASSWORD@HOST:PORT/DATABASE

各コンポーネントの簡単な説明は以下のとおりです

  • USERNAME: データベースユーザーの名前
  • PASSWORD: データベースユーザーのパスワード
  • HOST: mongod (またはmongos) インスタンスが実行されているホスト
  • PORT: データベースサーバーが実行されているポート(MongoDBでは通常27017
  • DATABASE: データベースの名前。MongoDB Atlasを使用している場合、MongoDB Atlasの環境リンクにはデータベース名が含まれていないため、接続URLに手動でデータベース名を追加する必要がある点に注意してください。

トラブルシューティング

Error in connector: SCRAM failure: Authentication failed.

Error in connector: SCRAM failure: Authentication failed.というエラーメッセージが表示された場合、接続文字列の末尾に?authSource=adminを追加することで、認証元のデータベースを指定できます。

Raw query failed. Error code 8000 (AtlasError): empty database name not allowed.

Raw query failed. Code: unknown. Message: Kind: Command failed: Error code 8000 (AtlasError): empty database name not allowed.というエラーメッセージが表示された場合は、データベースURLにデータベース名を必ず追加してください。詳細については、こちらのGitHubイシューで確認できます。

© . All rights reserved.