[英]When to close mongoose connection
我刚刚开始学习Node.js,这是我编写的代码。 在/ module中,我有一个db.js
var mongoose = require('mongoose');
var db = mongoose.connection;
db.on('error',console.error);
db.once('open',function(){
});
mongoose.connect('mongodb://localhost:27017/test');
//If the Node process ends, close the Mongoose connection
process.on('SIGINT', function() {
mongoose.connection.close(function () {
console.log('Mongoose default connection disconnected through app termination');
process.exit(0);
});
});
exports.db = mongoose;
和一个模块user.js
var mongoose = require('./db').db;
var userSchema = mongoose.Schema({
name: "String",
email: "String",
password: "String"
});
exports.User = mongoose.model("User",userSchema);
然后在app.js中
var User = require('./module/user').User;
var user001 = new User({
name:"user001",
email:"user001@email.com",
password:"password001"
});
user001.save(function(err,result){
if(err) return console.error(err);
console.dir(result);
});
当我运行app.js时,保存后进程不会退出,我知道这是因为猫鼬仍处于连接状态。我的问题是,当进程退出时如何自动关闭它? (我知道我必须使用mongose.connect.close()将其关闭,但是我应该在代码中放在哪里?)
我不确定您的意思是什么,在保存用户模型时应断开与Mongo DB的连接。 因为在上面的代码中,保存模型时您并没有杀死进程,所以您只是在记录结果。
至于“ SIGINT”事件上的侦听器,您应该可以在通过单击CTRL-C命令从终端杀死Node进程后关闭连接。
在编写应用程序时,我总是做的事情是为该过程添加了更多的侦听器。
process.once('SIGUSR2', function() { shutdown(process.exit); }); process.on('SIGINT', function() { shutdown(process.exit); }); process.on('SIGTERM', function() { shutdown(process.exit); }); process.on('exit', function() { shutdown(); }); function shutdown(callback) { // shutdown connections callback && callback(); }
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.