首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何修复用于检查登录的node.js代码

如何修复用于检查登录的node.js代码
EN

Stack Overflow用户
提问于 2019-07-13 22:38:40
回答 1查看 54关注 0票数 1

我刚接触节点js,不知道为什么它总是返回false值。我有一个用html制作的表单,它发送post请求,然后app.js调用login.js函数并检查数据库

我试着用2var手动输入,它工作了,但当使用表单时,它不能。

代码语言:javascript
复制
app.post('/login', urlencodedParser, function (req, res) {
  var check = require('./js/login.js');
  var username = req.body.username;
  var password = req.body.password;
     if(check([username,password]) == true){
        console.log('fine');
        res.render('index');
     }
     else{
        console.log('get lost');
        res.render('login');
     }
});

这是调用login.js的app.js代码,但是即使返回值不正确,页面也不会呈现。

代码语言:javascript
复制
var check = function(arr){
  var con = require(__dirname + '/database.js');
  var login_check = false;
  con.connect(function(err) {
    if (err) throw err;
    con.query("SELECT * FROM users WHERE (name = ?) AND (password = ?)", [arr[0], arr[1]], function (err, result, fields) {
      if (err) throw err;
      if(result)
      {
        login_check = true;
      }
    });
  });
  return login_check;
};

module.exports = check;
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-07-14 00:26:13

因为您的con.query函数是异步的,所以默认情况下,函数的返回总是为false (它在执行检查之前返回)。另一种方式,你可以尝试使用回调函数作为我的建议代码如下:

代码语言:javascript
复制
app.post("/login", urlencodedParser, function(req, res) {
  var check = require("./js/login.js");
  var username = req.body.username;
  var password = req.body.password;
  var checkCallback = function (isLogin) {
      if (isLogin) {
        console.log("fine");
        res.render("index");
      } else {
        console.log("get lost");
        res.render("login");
      }
  }
  check([username, password], checkCallback);
});

// -----------------------------
// login.js
var check = function(arr, callback) {
  var con = require(__dirname + "/database.js");
  var login_check = false;
  con.connect(function(err) {
    if (err) throw err;
    con.query(
      "SELECT * FROM users WHERE (name = ?) AND (password = ?)",
      [arr[0], arr[1]],
      function(err, result, fields) {
        if (err) throw err;
        if (result) {
          login_check = true;
          callback(true); // Call the callback function here after checking is done
        }
      }
    );
  });
  return login_check;
};

module.exports = check;
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57020126

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档