所以我认为我是这样做的,但我猜不是。我试图将查询结果传递给then()
中的函数。我在这两个函数中有一个console.log()
日志结果。第一个应该是吐出结果。第二个是给我undefined
,我无法弄清楚我做错了什么。来自SQL查询的结果没有传递给Node Js Promise中的resolve()
var dbConnect =() => new Promise(
(res, rej) => {
var connection = mysql.createPool(Config.mariaDBCred);
connection.getConnection((err, connection) => {
if(err) return rej(err);
return res(connection);
});
}
);
var dbQuery = (connection, queryString, paramArray) => new Promise(
(res, rej) => {
var sql = mysql.format(queryString, paramArray);
connection.query(sql,
(err, results, fields) => {
connection.release();
console.log(results); //THIS DISPLAYS RESULTS FROM THE QUERY CORRECTLY
if(err) return rej(err);
return res(results, fields);
}
);
}
);
//CHECK IF EMAIL EXISTS
module.exports.doesEmailExist = (email, callback) => {
dbConnect().then(
(connection) => {
dbQuery(
connection,
'SELECT `id`, `password_hash` FROM `users` WHERE email = ?',
[email]
)
}
).then(
(results, fields) => {
console.log(results); //THIS DISPLAY UNDEFINED
if(results.length > 0) return callback(true, results);
return callback(false, "Email does not exist.");
}
).catch(
(reason) => {
console.log(reason);
return callback(false, "Internal Error");
}
);
}
等等......我需要把第二个'then()'放在第一个'then()'里面吗?但是,如果是这样的话,那我该如何避免使用两个渔获物? – user2287474
nope,但这意味着你的第一个'then'工作不正常,请尝试从你的查询中删除反引号(选择用户名,密码...)' – Taki
@Taki不幸的是,这没有奏效。 – user2287474