我是NodeJS(Duh!)的新手。 我知道它执行异步的功能,但我仍然无法看到是什么原因导致了这种现象:NodeJS mysql查询返回空结果
我使用express和mysql模块,并试图根据请求参数执行SQL查询。它应该是一个简单的验证API功能,其中服务器将通过监听特定的URL来查询两个请求参数(用户和密码),从而在数据库中查找用户。
问题是,SQL查询总是返回一个空对象作为结果,当我在查询中使用请求参数执行此操作时。
但是,如果我硬编码查询并在app.get(...)之外运行它,我会得到期望的结果!但我需要这对需要定制工作...
(我不打算使用GET请求以后,这个例子是用于调试目的:))
我在做什么错这里?
这里是我的代码:
// Server and Mysql setup here
var app = require('express').createServer(),
SERVER_PORT = 8080;
var Client = require('mysql').Client,
client = new Client(),
...
// User, password and database setup here, cropped out from this example //
// ...
function validateUser(user, passwd, callback) {
client.query('SELECT date FROM '+CUSTOMERS_TABLE+' WHERE email="'+user+'" AND passwd="'+passwd+'";',
function selectCb(err, results, fields) {
if (err) {
throw err;
}
console.log(fields);
callback(results);
});
}
app.get('/', function(req, res){
var url_parts = url.parse(req.url, true);
var query = url_parts.query;
if((typeof query[REQ_PARAM_USER] != 'undefined' && typeof query[REQ_PARAM_PASSWD] != 'undefined')
&& (query[REQ_PARAM_USER] != '' && query[REQ_PARAM_PASSWD] != '')) {
validateUser(REQ_PARAM_USER, REQ_PARAM_PASSWD, function(results) {
console.log(results);
});
}
res.end("End")
});
app.listen(SERVER_PORT);
console.log('Server running at port '+SERVER_PORT);
哦,顺便说一下,执行console.log(场)输出正确的领域!但为什么不结果呢?