mongoose断开连接不起作用

完成数据库工作后,我试图断开mongoose连接,但似乎没有工作

var mongoose = require('mongoose'); mongoose.connect('mongodb://localhost:27017/myDatabase'); var MyModel = mongoose.model('MyModel', MySchema); //do something here mongoose.disconnect(); 

第一次一切正常,但是当第二次运行代码,我得到错误“试图打开未closures的连接”。 我也试过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的非阻塞function,“断开”在“findOne”完成之前执行,所以当然不起作用!

解决方法是将断开连接放入callback函数中:

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

尝试像这样:

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