Javascript 回调函数返回未定义的值
api.js: searchAccessToken函数: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 + "'";
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
nowsearchAccessToken(name)
I已经更新了代码,请改用promisified库