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 }
我有这个问题做mocha
unit 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
,我面对两个: OverwriteModelError
和Error: Trying to open unclosed connection errors
。