我在完成数据库工作后试图断开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();
});
答案 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();
});