为了账号安全,请及时绑定邮箱和手机立即绑定

我如何从子函数中获取价值

我如何从子函数中获取价值

当年话下 2023-08-18 16:55:37
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 ???;}我有这样的代码,但我不知道如何使该函数返回比较函数的值(true 或 false)。像我一样在子函数中添加 return 似乎不起作用。有人可以帮我吗?
查看完整描述

2 回答

?
潇潇雨雨

TA贡献1833条经验 获得超4个赞

你可以返回一个承诺:


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 注入。


查看完整回答
反对 回复 2023-08-18
?
有只小跳蛙

TA贡献1824条经验 获得超8个赞

bcrypt 返回一个承诺 https://www.npmjs.com/package/bcrypt#with-promises

bcrypt.compare(pass, result[0].password).then((result) => { 
 return result;
})


查看完整回答
反对 回复 2023-08-18
  • 2 回答
  • 0 关注
  • 111 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信