Express JS如何从不同的文件中包含node-mysql对象

时间:2014-07-22 19:47:32

标签: mysql node.js express node-mysql

我想从同一个文件中包含我的mysql连接(如果我需要更改sql密码或我不想在许多文件中更改的任何内容)。

这是我的mysql.js文件:

module.exports = require('mysql').createConnection(
  {
      host     : 'localhost',
      user     : 'admin',
      password : 'xxxxxxxx',
      database : 'database'
  }

);

我希望像这样使用:

var connection = require(__dirname + '/../../../mysql');
connection.connect();
.
.
.

我的问题是它只能工作一次。当我启动服务器时,我可以查询没有任何问题,但在第二个查询中,我在控制台中收到以下错误消息:

"Cannot enqueue Handshake after invoking quit."

有人知道为什么不工作吗?

2 个答案:

答案 0 :(得分:0)

显然你不再需要在createConnection()之后调用connect(),如果你愿意,它将在你查询时处理。

来自文档:

  

但是,也可以通过调用a来隐式建立连接   查询:

     

var mysql = require('mysql');      var connection = mysql.createConnection(...);

     

connection.query('SELECT 1',function(err,rows){//已连接!       (除非设置err)});

     

取决于您的处理方式   错误,两种方法都可能是合适的。任何类型的连接错误   (握手或网络)被视为致命错误,请参阅错误   处理部分了解更多信息。

除此之外,你可能在调用同一连接上的end()之前调用connect(),你可能想要检查它。

答案 1 :(得分:0)

感谢您的帮助,但我找到了解决问题的方法。我刚刚在mysql.js文件中创建了变量,然后我将它们导出为:

var host = 'localhost';
module.exports.localhost = localhost;

我可以在另一个js文件中使用它:

var connection = require(__dirname + '/../../../mysql');

connection.localhost;

我在这篇文章中找到了它: http://openmymind.net/2012/2/3/Node-Require-and-Exports/