如何在mongoose中处理mongoDB关闭

时间:2015-12-16 18:39:11

标签: 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('open', function (callback) {
    console.log("OPEN DB...");
});

module.exports = mongoose;

我想知道:如果我只使用CTRL + C终止使用该mongoose连接的应用程序,我必须做些什么吗? MongoDB是否知道此连接已关闭(或者如何通知此情况)?

这在应用程序可能需要重新启动的DEV阶段特别有用。

由于

1 个答案:

答案 0 :(得分:2)

这是一个我认为可能有用的想法。 Node.js接收unix信号。因此,例如,Ctrl + C将一个unix信号(SIGINT)发送到您在该终端中运行的Node.js应用程序以终止。

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

要覆盖信号,您只需要这样做:

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

这样当你执行CTRL + C时,它会优雅地关闭事物而不会有损坏的风险。