Javascript 回调函数返回未定义的值

Javascript 回调函数返回未定义的值,javascript,node.js,Javascript,Node.js,api.js: searchAccessToken函数: var db = require('./db.js'); console.log(searchAccessToken(name,queryDB)); function searchAccessToken(emailAddress,callback){ var sql = "SELECT accessToken FROM device WHERE email_address = '" + emailAddress + "'";

api.js:

searchAccessToken函数:

var db = require('./db.js');

console.log(searchAccessToken(name,queryDB));
function searchAccessToken(emailAddress,callback){
    var sql = "SELECT accessToken FROM device WHERE email_address = '" + emailAddress + "'";
    return callback(sql);
}
queryDB函数:

var db = require('./db.js');

console.log(searchAccessToken(name,queryDB));
function searchAccessToken(emailAddress,callback){
    var sql = "SELECT accessToken FROM device WHERE email_address = '" + emailAddress + "'";
    return callback(sql);
}
db.js


我已经阅读了SOF()中的另一个线程,但仍然无法找出代码中的错误。请不要结束这个问题,因为我已经挣扎了几个小时来找到解决方案,但仍然无法解决
Console.log
在应该返回值时返回未定义的值

您的回调函数流不正确,您正在调用异步函数,即
conn.query

var mysql = require('mysql');

var pool = mysql.createPool({
  //development
  // host:'localhost',
  // user:'root',
  // password: '',
  // database: 'merchantdev',
  // insecureAuth : true

  //staging
  host:'',
  user: '',
  password: '',
  database: ''
});

var getConnection = function(callback) {
  pool.getConnection(function(err, connection) {
      if(err) {
        return callback(err);
      }
      callback(null, connection);
  });
};

module.exports = getConnection;

使用回调错误处理签出此代码段

var db = require('./db.js');

// this function not required callback function 
// as we are not doing anything asynchronous
function searchAccessToken(emailAddress){
    var sql = "SELECT accessToken FROM device WHERE email_address = '" + emailAddress + "'";
    return sql;
}
// this function required callback function 
// as we are calling 2 asynchronous function
function queryDB(sql, callback){
    var token = "";
    db(function(err,conn){
        conn.query(sql,function(err,results){
            if(err){
                conn.release();
                return callback(err);
            }else if(results.length){
                token = results[0].accessToken;
            }
            conn.release();
            return callback(null, token);
        });
    });
}

queryDB(searchAccessToken(name), function callback(err, token) {
   if(err) return console.log(err)
   console.log(token);
})

它说callback不是queryDBsorry中的函数,请检查拼写错误在哪里?我忘了关闭括号,最初
searchAccessToken(name
now
searchAccessToken(name)
I已经更新了代码,请改用promisified库