查询数据库时,出现此错误:
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”。
你知道我怎么做这个工作吗?
答案 0 :(得分: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
答案 1 :(得分:0)
我认为问题在于mysql正在努力在初始化过程中建立连接,但是你的代码在准备好之前就试图使用mysqlConnection。
您应该将搜索放在连接良好的位置。
另外。我想你应该看一下使用游泳池。每次建立新的连接都非常耗时。