Можно ли изменить экспортируемую переменную после ее экспорта? - PullRequest
0 голосов
/ 25 сентября 2018

Я все еще новичок в 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;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...