这是问题的简化版本,但基本上我正在尝试用mongoose打开2个mongodb连接,并且它给了我“试图打开未关闭的连接”。错误。
代码示例:
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();
知道如何让它发挥作用吗?
答案 0 :(得分:45)
connect()
打开与db的默认连接。由于您需要两个不同的连接,请使用createConnection()
。
API链接:http://mongoosejs.com/docs/api.html#index_Mongoose-createConnection
答案 1 :(得分:2)
添加Raghuveer答案:
我还要提到的是,而不是直接使用mongoose(你可能会以这种方式使用它来结束这篇文章):
require('mongoose').model(...);
您将使用返回的连接:
var db = require('mongoose').connect('xxx', 'yyy');
db.model(...);
答案 2 :(得分:2)
我在运行测试时遇到了这个问题。
这就是我解决它的方法。
//- 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
}

答案 3 :(得分:2)
我在使用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...', () => {
});
});
});
被调用了两次。
我已用此代码解决了这个问题:
id1 p1 p2
0 1 7.935 5.103
1 1 7.934 5.112
2 1 7.936 5.102
3 1 7.938 5.145
4 2 7.930 5.191
5 2 7.945 5.161
6 2 7.954 5.127
希望它可以帮到你!
答案 4 :(得分:0)
您正在尝试第二次打开默认连接(尚未关闭)。
执行以下操作
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');
答案 5 :(得分:0)
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);
});
我发现这个问题输入错误信息,尽管我的问题有点不同,但我相信它对使用Hapi的人有用。更具体地说,Hapi + rest-hapi + mocha。
使用mocha
选项运行--watch
时,我遇到了OverwriteModelError
和Error: Trying to open unclosed connection errors
。
答案 6 :(得分:0)
简单的解决方案 -
Use mongoose.createConnection() instead of mongoose.connect()
Its occurs because of version issue