0

查询数据库时,出现此错误:

TypeError: Cannot call method 'query' of undefined
    at Object.<anonymous> (/home/nodeuser/myapp_node/index.js:51:17)
    at Module._compile (module.js:456:26)
    at Object.Module._extensions..js (module.js:474:10)
    at Module.load (module.js:356:32)
    at Function.Module._load (module.js:312:12)
    at Function.Module.runMain (module.js:497:10)
    at startup (node.js:119:16)
    at node.js:901:3

我的代码如下所示:

var mysql = require('mysql');
var mysqlConnection = mysql.createConnection({
  host     : 'localhost',
  user     : 'root',
  password : '',
  database : 'carousel',
  debug : true,
}).connect(function(err) {
    if ( !err ) {
        console.log("Connected to MySQL");
    } else if ( err ) {
        console.log(err);
    }
});


var userId = 23

mysqlConnection.query('SELECT * FROM tusers WHERE id = ?', [userId], function(err, results) {
    console.log(err);
    console.log(results);
});

我确保“mysql”在 node_modules 中。此外,我在控制台中看到“已连接到 MySQL”。

你知道我该怎么做吗?

4

2 回答 2

5

您链接到的连接方法mysql.createConnection不返回连接。相反,您可以这样做:

var mysqlConnection = mysql.createConnection({
  host     : 'localhost',
  user     : 'root',
  password : '',
  database : 'carousel',
  debug : true,
});

mysqlConnection.connect(function(err) {
  if ( !err ) {
    console.log("Connected to MySQL");
  } else if ( err ) {
    console.log(err);
  }
});

或者您可以完全省略连接调用“也可以通过调用查询来隐式建立连接” - https://github.com/felixge/node-mysql#establishing-connections

于 2013-10-28T07:04:46.483 回答
0

我认为问题在于 mysql 正在初始化过程中建立连接,但您的代码正在尝试使用 mysqlConnection 在它准备好之前。

您应该将搜索放在表明连接良好的位置。

还。我认为您应该考虑使用游泳池。每次都建立新的连接非常耗时。

于 2013-10-28T06:43:18.077 回答