javascript - ExpressJS函数无法返回

标签 javascript node.js express

我一直在尝试使用 Express 网络服务器开发一个在 Electron 上运行的应用程序。我还使用 mysql npm 包来处理数据库内容。但是登录功能有问题,我没能找到问题所在。我希望你能帮忙。

服务器.js

function userLogin(data){

  con.query(`SELECT * FROM players WHERE player_username = '${data.login_username}'`, (err, result, fields) => {
  if (err) throw err;

  var compare = bcrypt.compareSync(data.login_password, result[0].player_password);

      if(compare == true) {
          return "1";
      }
      else{
          return "0";
      };
  });
};

app.route('/login').post((req,res) => {
 res
  .json(userLogin(req.body))
  .end();
});

一切都已定义。没有显示错误,但函数无法返回,我不明白为什么。如果我在 return 上方添加一个 console.log,它会记录结果,因此查询也可以,但该函数不会返回任何内容,实际上是任何内容。

最佳答案

由于 userLogin 是一个异步函数,因此您不能像普通函数一样调用它并期望它返回一个值。相反,您应该在 con.query 的回调中处理其结果(当它们可用时),如下所示:

app.route('/login').post((req, res) => {
  con.query(`SELECT * FROM players WHERE player_username = '${data.login_username}'`, (err, result, fields) => {
    var compare = bcrypt.compareSync(data.login_password, result[0].player_password);
    res.json(compare ? "1" : "0").end();
  });
});

关于javascript - ExpressJS函数无法返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58308871/

相关文章:

javascript - 无法读取 null 的属性(读取 'name' )

javascript - 具有大数据的 jQuery 数据表和 Grails

javascript - 准备就绪时执行一系列 promise

javascript - Express.js : capture generic routes with numeric Id

javascript - 用户关闭浏览器后,Node.js 可以继续运行进程吗?

javascript - 如何使用 multer-gridfs-storage、express、mongodb 在用户配置文件中添加图像路径

javascript - 结合 AngularJS 了解 Express 路由(使用mean.js 样板)

JavaScript 缓慢且不干燥

node.js - Node 请求(读取图像流 - 管道返回响应)

javascript - 用于比较 major.minor.patch 字符串的数组 reduce 函数