在 knex js 中查询用户和密码验证

query in knex js for users and password validation

我想使用模板中的数据(使用 handlebars 和 expressjs)使用 knex js 创建一个查询来验证用户。我创建了一个查询,然后将其添加到一个变量中,该变量在验证用户登录后。 关键是我在让 knex 查询做我想做的事情时遇到了麻烦,而且我不知道我做错了什么。

    var usernameReq = req.body.username;
    var passwordReq = req.body.password;
    var pass;
    knex('users').where({
    username: usernameReq }).select('password').then(
    function(result){
        pass = result;
        }).catch(function(error) {
    console.log(error);
});

if (passwordReq === pass){
  //login  
}

Knex 使用异步的承诺。

if (passwordReq === pass)超出了承诺。这意味着结果将不可用。

if 和所有依赖于查询结果的代码(例如 http 响应本身)放在 then(...).

另请注意,结果是一个对象数组,即使在引用单行的单列时也是如此。因此,要引用密码,您必须使用 result[0].password

var usernameReq = req.body.username;
var passwordReq = req.body.password;
knex('users')
  .where({ username: usernameReq })
  .select('password')
  .then(function(result) {
    if (!result || !result[0])  {  // not found!
      // report invalid username
      return;
    }
    var pass = result[0].password;
    if (passwordReq === pass) {
      // login
    } else {
      // failed login
    }
  })
  .catch(function(error) {
    console.log(error);
  });