Node.js 如何在mongoose中处理mongoDB close

Node.js 如何在mongoose中处理mongoDB close,node.js,mongodb,mongoose,Node.js,Mongodb,Mongoose,全部: 我对mongoose很陌生,现在,我打开MongoDB就像: db.js var DB_URL = "mongodb://localhost/test/"; var mongoose = require("mongoose"); mongoose.connect(DB_URL); var db = mongoose.connection; db.on('error', console.error.bind(console, 'connection error:')); db.once

全部:

我对mongoose很陌生,现在,我打开MongoDB就像:

db.js

var DB_URL = "mongodb://localhost/test/";

var mongoose = require("mongoose");

mongoose.connect(DB_URL);
var db = mongoose.connection;
db.on('error', console.error.bind(console, 'connection error:'));
db.once('open', function (callback) {
    console.log("OPEN DB...");
});

module.exports = mongoose;
我想知道:若我使用mongoose连接通过简单的CTRL+C终止应用程序,我必须做些什么?MongoDB是否知道此连接已关闭(或者我如何通知)

这在开发阶段尤其有用,因为该应用程序可能需要重新启动很多次


谢谢

嗯,我想这里有一个想法可能会有所帮助。Node.js接收unix信号。例如,Ctrl+C向在该终端中运行的Node.js应用程序发送一个unix信号(SIGINT)以终止

假设您想在关闭node.js应用程序之前关闭数据库连接。这样可以防止数据丢失或损坏。这样做的一个好方法是覆盖终止信号

要覆盖信号,您只需执行以下操作:

process.on('SIGINT', function(params) {
    //Shut your db instance here. 
    //close or save other stuff. 
});

这样,当你按CTRL+C键时,它会优雅地关闭东西,而不会有损坏的风险

谢谢,我会试试的。有一个问题:我应该把这部分放在哪里,在app.js(主处理程序文件)或db.js中?把它添加到app.js中。也不要忘记,你需要在那里抛出代码来终止进程。只要抬起头来。:)谢谢,你能告诉我“终止进程”需要什么代码吗?另外,当我在SIGINT函数中放入db.connection.close()时,它会立即终止应用程序,而不会导致db断开连接,如何知道在应用程序关闭之前db是否成功关闭?请记住,如果您说db.connection.close(),则必须向该函数传递回调。在这个函数中,你说process.exit(1);您可以在这之前放置一个小的控制台日志,以查看是否接收到您的信号。