最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

ExpressJS函数无法返回

运维笔记admin12浏览0评论

ExpressJS函数无法返回

ExpressJS函数无法返回

我一直在尝试使用Express Web服务器在Electron上开发一个应用程序。我还使用mysql npm软件包存储数据库内容。但是登录功能有问题,我找不到问题。希望您能提供帮助。

server.js

function userLogin(data){

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

  var compare = bcryptpareSync(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();
});

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

回答如下:

因为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 = bcryptpareSync(data.login_password, result[0].player_password);
    var response;

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

    res.json(response).end();
  });
});

与本文相关的文章

发布评论

评论列表(0)

  1. 暂无评论