Mongoose断开连接不起作用

时间:2013-01-11 14:45:34

标签: node.js mongodb mongoose

我在完成数据库工作后试图断开mongoose连接,但似乎无法正常工作

var mongoose = require('mongoose');

mongoose.connect('mongodb://localhost:27017/myDatabase'); 

var MyModel =  mongoose.model('MyModel', MySchema);

//do something here

mongoose.disconnect();

第一次一切正常,但是当第二次运行代码时,我收到错误“试图打开未关闭的连接”。我也试过mongoose.connection.close();并得到了相同的结果。

有人可以帮我解决这个问题吗?

非常感谢!

加里

我想我想出来了。

在我的代码中,我试图用我的模型对数据库做一些事情:

var mongoose = require('mongoose');

mongoose.connect('mongodb://localhost:27017/myDatabase'); 

var MyModel =  mongoose.model('MyModel', MySchema);

MyModel.findOne({}, function () {...});

mongoose.disconnect();

看到问题?由于Nodejs的非阻塞功能,在“findOne”完成之前执行了“disconnect”,所以当然它不起作用!

解决方案是将断开连接到回调函数中:

MyModel.findOne({}, function () {
...
mongoose.disconnect();
});

2 个答案:

答案 0 :(得分:6)

尝试这样:

var db = mongoose.connect('mongodb://localhost:27017/myDatabase'); 
MyModel.findOne({}, function () {
    // todo
    db.disconnect();
});

答案 1 :(得分:3)

var db = mongoose.createConnection('mongodb://localhost:27017/myDatabase'); 

MyModel.findOne({}, function () {

     // Processing to be done

     db.close();
});