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

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 似乎不起作用。有人可以帮我吗?


当年话下
浏览 112回答 2
2回答

潇潇雨雨

你可以返回一个承诺: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 注入。

有只小跳蛙

bcrypt 返回一个承诺 https://www.npmjs.com/package/bcrypt#with-promisesbcrypt.compare(pass, result[0].password).then((result) => {   return result; })
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript