我是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(場)輸出正確的領域!但爲什麼不結果呢?