我有一个基于express和mongoose构建的节点js app。到目前为止,我正在使用mongoose.connect(uri,options)建立数据库连接。但是从现在开始,我希望能够连接到多个主机上的多个数据库。如果我在同一台主机上,我的一切工作正常(我使用mongoose.createConnection(uri,options))。对于存储在同一主机或localhost数据库中的生产数据库,一切都很好。如果我尝试连接到一个localhost数据库和一个远程数据库,而不是两个都在同一主机上,则会出现此问题。
DbConnection文件:
this.sharedDbConnection = this.mongooseConnection.createConnection('sharedDb');
this.defaultDbConnection = this.mongooseConnection.createConnection('mongodb');
MongooseConnection文件:
function getConnectionUrl(config) {
return 'mongodb://' + config.user + ':' + config.password + '@' + config.host + ':' + config.port + '/' + config.dbName;
}
MongooseConnection.prototype.createConnection = function(dbName) {
var connection = this.mongoose.createConnection(getConnectionUrl(this.config[dbName]), this.mongooseConfig, function(err) {
if(err) {
console.log(err);
} else {
console.log('connected with createConnection on ', dbName);
}
});
return connection;
};
MongooseConfig:
{
server: {
poolSize: 10,
socketOptions: {
keepAlive: 1
}
},
db: {
numberOfRetries: 10,
retryMiliSeconds: 1000
},
auth: false
};