我是 JavaScript(和回调)新手。 在我的 NodeJS 应用程序中,我创建了一个异步函数来从 SQL 数据库检索一些用户数据。 工作正常,该函数确实检索数据。 然后,我使用 BCrypt 检查用户提供的密码是否与用户的“appPassword”匹配。
这个工作也!!
但是,当密码匹配成功(或不成功)时,我尝试将 JSON 对象返回给调用函数。但调用函数中的“结果”始终是“未定义” 我不明白我在这里做错了什么。
JavaScript 专家可以帮忙吗?
我已经在下面发布了我的代码(异步函数和调用函数):
注意:调用函数中的“结果”始终是“未定义”
异步函数VerifyUserByUsernamePassword(用户电子邮件,密码){
const sql = require('mssql')
const { configMSSQL } = require("./db.config.js");
if (sql) sql.close();
return await sql.connect(configMSSQL).then(async pool => {
// Stored procedure
let output_parameter
return await pool.request()
.input('Email', sql.NVarChar, userEmail)
// .output('output_parameter', sql.Int)
.execute('API_READ_USER_BY_EMAIL')
}).then(async result => {
sql.close();
// sql = null;
if (result.recordset.length > 0) {
const appPassword = result.recordset[0].appPassword;
bcrypt.compare(password, appPassword, async function (err, result2) {
if (err) {
console.log(err);
return ({
"message": "failed"
})
}
if (!result2) {
// console.log("result2", result2)
return ({
"message": "failed"
})
}
console.log("result2 was True")
return ({
"message": "success",
"data": result
})
})
} else {
console.log("Error retrieving User Records for Login Verification......");
return ({
"message": "failed"
})
}
}).catch(err => {
sql.close();
// ... error checks
console.log("Error retrieving User Records for Login Verification", err);
return ({
"message": "failed"
});
});
}
exports.VerifyLogin = async (req, res) => {
var errors = []
if (!req.body.email) {
errors.push("Credentials Missing");
}
if (!req.body.password) {
errors.push("Credentials Missing");
}
if (errors.length) {
res.status(400).json({ "error": errors.join(",") });
return;
}
var email = req.body.email
var password = req.body.password
const { VerifyUserByUsernamePassword } = require("../database/mssqldb.js");
await VerifyUserByUsernamePassword(email, password).then(async result => {
if (result && result.message === "success") {
res.json(result.data);
} else {
res.json({
"message": "failed",
"User Record ": email
},);
}
}).catch(err => {
console.log(err);
res.json({
"message": "error",
"User Record ": email
},)
})
}