导出后是否可以修改导出的变量

时间:2018-09-25 12:55:48

标签: node.js node-modules

我仍然对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;

0 个答案:

没有答案