Node.js 函数调用时返回未定义的
以下是我的职责:Node.js 函数调用时返回未定义的,node.js,Node.js,以下是我的职责: function searchAccessToken(emailAddress){ var sql = "SELECT accessToken FROM device WHERE email_address = '" + emailAddress + "'"; console.log(sql); var token = ""; db(function(err,conn){ conn.query(sql, function(err,
function searchAccessToken(emailAddress){
var sql = "SELECT accessToken FROM device WHERE email_address = '" + emailAddress + "'";
console.log(sql);
var token = "";
db(function(err,conn){
conn.query(sql, function(err,results){
if(err){
conn.release();
throw err;
}else if(results.length){
conn.release();
token = results[0].accessToken;
return token;
}else{
conn.release();
return token;
}
});
});
}
var userAccessToken = searchAccessToken(name);
这就是我调用函数的方式:
function searchAccessToken(emailAddress){
var sql = "SELECT accessToken FROM device WHERE email_address = '" + emailAddress + "'";
console.log(sql);
var token = "";
db(function(err,conn){
conn.query(sql, function(err,results){
if(err){
conn.release();
throw err;
}else if(results.length){
conn.release();
token = results[0].accessToken;
return token;
}else{
conn.release();
return token;
}
});
});
}
var userAccessToken = searchAccessToken(name);
但是,当我尝试调试时,userAccessToken
返回未定义的,它应该返回一个字符串
编辑:(但仍然不起作用)。添加了回调,但仍然不起作用
function searchAccessToken(emailAddress){
var sql = "SELECT accessToken FROM device WHERE email_address = '" + emailAddress + "'";
console.log(sql);
var token = "";
db(function(err,conn,callback){
conn.query(sql, function(err,results){
if(err){
conn.release();
return callback(err);
}else if(results.length){
conn.release();
token = results[0].accessToken;
return callback(token);
}else{
conn.release();
return callback(token);
}
});
});
}
在这种情况下,您应该使用callback、promise或async wait的可能重复项。searchAccessToken()返回未定义,因为它不等待conn.queryI替换的返回令牌返回回调(令牌)的结果;但它仍然没有定义你还没有理解这个问题
searchAccessToken
是需要接受并传递回调的函数。您不能仅使传递给db
的函数具有第三个参数。