Я все еще новичок в 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;