Mongoose と単一 node.js プロジェクト内の複数のデータベース 質問する

Mongoose と単一 node.js プロジェクト内の複数のデータベース 質問する

私はサブプロジェクトを含むNode.jsプロジェクトを行っています。1つのサブプロジェクトには1つのMongodbデータベースがあり、Mongooseはデータベースのラップとクエリに使用されます。しかし、問題は

  • Mongoose では、モデルが 1 つの接続で構築されるため、単一の Mongoose インスタンスで複数のデータベースを使用することはできません。
  • 複数の mongoose インスタンスを使用する場合、Node.js にはキャッシュ システムがあるため、複数のモジュール インスタンスは許可されませんrequire()。Node.js でモジュール キャッシュを無効にすることは知っていますが、これは mongoose にのみ必要なため、良い解決策ではないと思います。

    createConnection()私は mongoose でと を使用しようとしましたopenSet()が、解決にはなりませんでした。

    私はマングースインスタンスをディープコピーしようとしました(http://blog.imaginea.com/deep-copy-in-javascript/) を使用してサブプロジェクトに新しい mongoose インスタンスを渡そうとしましたが、 がスローされましたRangeError: Maximum call stack size exceeded

この問題を回避するために、mongoose で複数のデータベースを使用する方法や回避策があるかどうかを知りたいです。mongoose は非常に簡単で高速だと思うからです。または、他に推奨されるモジュールはありますか?

ベストアンサー1

によると素晴らしいマニュアルcreateConnection() できる複数のデータベースに接続するために使用されます。

ただし、接続/データベースごとに個別のモデルを作成する必要があります。

var conn      = mongoose.createConnection('mongodb://localhost/testA');
var conn2     = mongoose.createConnection('mongodb://localhost/testB');

// stored in 'testA' database
var ModelA    = conn.model('Model', new mongoose.Schema({
  title : { type : String, default : 'model in testA database' }
}));

// stored in 'testB' database
var ModelB    = conn2.model('Model', new mongoose.Schema({
  title : { type : String, default : 'model in testB database' }
}));

それらの間でスキーマを共有できることはほぼ確実ですが、確認する必要があります。

おすすめ記事