![](/img/trans.png)
[英]Can't seem to query specific things using node-mysql with JavaScript
[英]node-mysql can't seem to connect
我遇到了node-mysql的问题,无法与它建立连接。 这是我的代码:
var mysql = require('mysql');
var pool = mysql.createPool({
connectionLimit: 10,
user: 'node',
password: 'pass',
host: 'localhost',
port: 3306,
database: 'store'
});
exports.getUser = function(user, pass){
var sql = 'SELECT * FROM store.users WHERE user = \'' + user + '\' AND password = \'' + pass + '\'';
pool.query(sql, function(err, rows, fields) {
if(err){
return err;
}else{
return rows.length;
}
});
};
只是似乎无法引发错误或其他任何原因。 数据库中的密码是用于测试的纯文本,因此如果我调用它:
var pool = require('./database');
var message = pool.getUser('test','test');
问题是您的getUser函数将在数据库函数异步执行时立即返回。 因此,到查询功能完成时,您的getUser函数就已经存在很长时间了。
您可以通过传递回调函数以及用户名和密码来解决此问题,如下所示:
var mysql = require('mysql');
var pool = mysql.createPool({
connectionLimit: 10,
user: 'root',
password: '',
host: '127.0.0.1',
port: 3306,
database: 'store'
});
exports.getUser = function(user, pass, cb){
var sql = 'SELECT * FROM store.users WHERE user = \'' + user + '\' AND password = \'' + pass + '\'';
pool.getConnection(function(err, connection) {
if(err) throw err;
// Use the connection
connection.query( sql, function(err, rows) {
if(err) throw err;
cb(rows.length);
// And done with the connection.
connection.release();
});
});
};
然后,您像这样调用函数:
var pool = require('./database');
pool.getUser('someuser', '1234', function(result){ console.log(result); } );
为了了解nodejs的异步特性,建议您看一下The Node Beginner Book( http://www.nodebeginner.org )。 甚至有一节专门针对您的问题,标题为“事件驱动的异步回调”。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.