Mongoose断开连接不起作用

Gar*_*ary 8 mongoose mongodb node.js

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

var mongoose = require('mongoose');

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

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

//do something here

mongoose.disconnect();
Run Code Online (Sandbox Code Playgroud)

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

有人可以帮我这个吗?

非常感谢你!

加里

我想我想出来了.

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

var mongoose = require('mongoose');

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

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

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

mongoose.disconnect();
Run Code Online (Sandbox Code Playgroud)

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

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

MyModel.findOne({}, function () {
...
mongoose.disconnect();
});
Run Code Online (Sandbox Code Playgroud)

小智 6

试试这样:

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