2017-10-05 13 views
3

私はNode.Js 8.6をMongoose 4.11と一緒に使用しており、複数のデータベース接続を持っています。 Db接続はmongoose.createConnectionで確立されます。 私は、mongooseオブジェクトがconnectionsというプロパティ(配列)を持っていることを知りました。そこに確立された接続が見えます。私の質問は、別のモジュールでdbモデルを作成するときに、接続を切り替えるための適切な方法です。複数の接続を切り替える

index.js

async function db1() { 
    await mongoose.createConnection(
     process.env.MONGODB_URI_1, 
     { useMongoClient: true } 
    ); 
} 

async function db2() { 
    await mongoose.createConnection(
     process.env.MONGODB_URI_2, 
     { useMongoClient: true } 
    ); 
} 

model.jsあなたが複数の接続を処理するためにcreateConnectionして、オブジェクトの戻りを使用することができます

//connect to db1 

const Test1 = mongoose.model('Test1', new mongoose.Schema({ name: String })); 

//connect to db2 

const Test2 = mongoose.model('Test2', new mongoose.Schema({ name: String })); 

答えて

0

const db1Link = await mongoose.createConnection(
    process.env.MONGODB_URI_1, 
    { useMongoClient: true } 
); 

// Connect to db1 
db1Link.model('Test1', new mongoose.Schema({ name: String })); 

const db2Link = await mongoose.createConnection(
    process.env.MONGODB_URI_2, 
    { useMongoClient: true } 
); 

// Connect to db2 
db2Link.model('Test2', new mongoose.Schema({ name: String })); 

Here is what the documentation says about it

複数の接続

これまでのところ、私たちはマングースのデフォルト 接続を使用してのMongoDBに接続する方法を見てきました。時には、Mongoに対して複数の接続が必要な場合があります。 はそれぞれ読み書き設定が異なります。たとえば、異なる データベースなどです。このような場合、私たちは mongoose.createConnection()を利用することができます。これはすでにすべての引数を受け付けており、すでに の新しい接続を返します。

var conn = mongoose.createConnection('mongodb://[username:[email protected]]host1[:port1][,host2[:port2],...[,hostN[:portN]]][/[database][?options]]', options); 

この接続オブジェクトは、モデルの作成と取得に使用されます。 モデルは常に1つの接続にスコープされます。

+0

これは本当です。これらの接続オブジェクトをモジュールの周りで共有するためのエレガントな方法は何でしょうか? –

関連する問題