首页 > 解决方案 > 我如何从子函数中获取价值

问题描述

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 ???;
}

我有这样的代码,但我不知道如何让这个函数返回比较函数的值(真或假)。在子函数中添加返回,就像我似乎没有工作一样。有人可以帮我吗。

标签: javascriptnode.js

解决方案


你可以返回一个承诺:

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


推荐阅读