我仍然对node.js还是陌生的,我正在尝试创建和导出与mysqljs的数据库连接。
我遇到了麻烦,因为如果发生诸如数据库崩溃或网络问题之类的事情,则需要重新创建连接。我不知道如何将以前导出的连接扩展到我的应用。
有没有办法像我一样更新模块导出的对象?
我丢失了某些东西还是使用了错误的方式使用module.exports?
我认为可以使用函数或构造函数,但我必须编辑当前使用dbh变量的每个模块。
var reconnection_interval = 5000;
var db_config = {
host : "localhost",
user : "root",
password : "",
database : "test"
};
var dbh;
function handleDisconnect(conn)
{
conn.on('error', function(err)
{
// If the error is not fatal, we just ignore it.
if(!err.fatal){return;}
else
{
logger.error('Database error : '+err);
logger.info('Trying to reconnect in '+reconnection_interval/1000+'s');
// Destroying old connection.
dbh = undefined;
// Creating a new connection and trying to reconnect every <reconnection_interval>
setTimeout(function(){
dbh = mysql.createConnection(db_config);
handleDisconnect(dbh);
dbh.connect();
// I want to update the module.exports value, so it becomes the new connection
module.exports = dbh;
}, reconnection_interval);
}
});
}
dbh = mysql.createConnection(db_config);
handleDisconnect(dbh);
dbh.connect();
logger.info("Connected to database.");
module.exports = dbh;