javascript - 我如何从子函数中获取价值
问题描述
var checkAcount = (usr, pass) => {
var sql = "SELECT * FROM account WHERE userName = '" +usr+"'" ;
con.query(sql, (err, result) => {
if(err) throw err;
if(result.length > 0){
bcrypt.compare(pass, result[0].password, function(err, result1) {
if(result1 == true){
return true;
}
else{
return false;
}
});
}
else {
return false;
}
});
return ???;
}
我有这样的代码,但我不知道如何让这个函数返回比较函数的值(真或假)。在子函数中添加返回,就像我似乎没有工作一样。有人可以帮我吗。
解决方案
你可以返回一个承诺:
async function checkAcount(usr, pass) => {
const sql = "SELECT * FROM account WHERE userName = ?" ;
return new Promise((resolve, reject) => {
con.query(sql, [usr], (err, result) => {
if(err) {
reject(err);
throw err;
}
if(result.length > 0){
bcrypt.compare(pass, result[0].password, function(err, result1) {
if(result1 == true){
resolve(result);
return true;
} else{
reject(err);
return false;
}
});
} else {
reject(err);
return false;
}
});
});
}
不要使用字符串连接构建 SQL 查询。这允许 SQL 注入。
推荐阅读
- javascript - UnhandledPromiseRejectionWarning:错误:属性“密码”不存在。pg-promise
- git - Git:使用单个命令获取更改
- sql - 即使没有匹配查询的行,如何强制postgres返回0,使用coalesce,group by和join
- php - 如何重复响应数据
- python - 在python中将终端输出到具有单独列的csv
- java - 在Java中不可能从这些元素的一个数组中创建一个元素数组流
- python - 用 Python 检查决策树分类器的准确性
- oracle - ADF,在 inputComboboxListOfValues 组件中截断值
- django - Django oscar Api 未在 OSCAR_ORDER_STATUS_PIPELINE 中设置状态
- java - JAVA UI ActionListener 2 连续单击带有 if else 语句的按钮