mongoose试图打开未closures的连接

这是一个简化版本的问题,但基本上我试图与mongoose打开2个mongodb连接,它给了我“尝试打开未closures的连接”。 错误。

代码示例:

var db1 = require('mongoose'); db1.connect('my.db.ip.address', 'my-db'); var db2 = require('mongoose'); db2.connect('my.db.ip.address', 'my-db'); db2.connection.close(); db1.connection.close(); 

任何想法如何使其工作?

connect()打开到数据库的默认连接。 既然你想要两个不同的连接,使用createConnection()

API链接: http : //mongoosejs.com/docs/api.html#index_Mongoose-createConnection

在Raghuveer上添加答案:

我还要提到,而不是直接使用mongoose(你可能以这种方式使用它,你最终在这个职位):

 require('mongoose').model(...); 

您将使用返回的连接:

 var db = require('mongoose').connect('xxx', 'yyy'); db.model(...); 

运行我的testing时遇到此问题。

这是我做的解决它。

 //- in my app.js file. try { mongoose.connect('mongodb://localhost/userApi2'); //- starting a db connection }catch(err) { mongoose.createConnection('mongodb://localhost/userApi2'); //- starting another db connection } 

我有这个问题做mochaunit testing。

问题出在我添加第二个testing时,因为beforeEach被调用两次。

我用这个代码解决了这个问题:

 const mongoose = require('mongoose'); describe('Your test suite', () => { beforeEach( () => { if (mongoose.connection.db) { return; // or done(); } else { // connect to mongodb }); describe('GET /some-path', () => { it('It should...', () => { }); }); describe('POST /some-path', () => { it('It should...', () => { }); }); }); 

希望它可以帮助你!

您正尝试第二次打开默认连接(尚未closures)。

请改为执行以下操作

 var db = require('mongoose'); //note only one 'require' needed. var connectionToDb1 = db.createConnection('my.db1.ip.address', 'my-db1'); var connectionToDb2 = db.createConnection('my.db2.ip.address', 'my-db2'); 

使用mongoose.disconnect(fn) :

 mongoose.disconnect(() => { // here it would be possible "reset" models to fix // OverwriteModelError errors mongoose.models = {}; // here comes your logic like registering Hapi plugins server.register(somePlugin, callback); }); 

我发现这个问题input错误消息,尽pipe我的问题是有点不同,我相信这可能是有用的使用Hapi的人。 更具体地说, Hapi + rest-hapi + 摩卡 。

当使用--watch选项运行mocha ,我面对两个: OverwriteModelErrorError: Trying to open unclosed connection errors