2017-10-05 218 views
3

我正在使用Node.Js 8.6和Mongoose 4.11,並有多個數據庫連接。 Db連接通過mongoose.createConnection建立。 我發現mongoose對象有connections屬性(數組),我可以看到建立的連接。我的問題是,在獨立模塊中創建數據庫模型時,在連接之間切換的正確方法是什麼?Mongoose切換多個連接

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

//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

可以以處理您的多個連接使用由createConnection對象的回報。

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); 

此連接對象然後用於創建和檢索模型。 模型始終限定爲單個連接。

+0

的確如此。在模塊周圍共享這些連接對象的優雅方式是什麼? –