저는 NodeJS (duh!)를 처음 사용합니다. 비동기 함수를 실행하지만이 현상을 일으키는 원인을 확인할 수 없습니다.NodeJS mysql 쿼리가 빈 결과를 반환합니다.
express 및 mysql 모듈을 사용하고 요청 매개 변수를 기반으로 SQL 쿼리를 실행하려고합니다. 서버가 두 개의 요청 매개 변수 (user 및 passwd)에 대한 특정 URL에서 수신하여 데이터베이스에서 사용자를 조회하는 간단한 유효성 검증 API 기능으로되어 있습니다.
문제는 입니다. 쿼리에서 요청 매개 변수를 사용하면 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 (필드) 올바른 필드를 출력! 그러나 왜 결과가 아닌가?