koa中ctx.body写在connection.query中无法返回数据到前端?

发布于 2022-09-04 23:18:07 字数 1467 浏览 11 评论 0

最近在写一个koalogin,用的是MySQL数据库。今天遇到了一个完全不明白的问题,如下图
这是loginRouter, 我在if逻辑判断之前新建了一个变量var resultOuter, 其实这个resultOuter只是想把
userdbconnection.query(“SELECT password FROM user WHERE username=?”, [username], function(err, result)这里面返回的result带出function之外的,因为在userdbconnection.query(“SELECT password FROM user WHERE username=?”, [username], function(err, result){…}之中,我给ctx.body亦或是ctx.message赋值完全无法返回到前端,所以我想把这个result带出function,在外面做判定,然后再赋值给ctx.bodyctx.message,可是不管尝试了什么方法,这个result只要一离开function之外就变成了undefined,我测试了一下,因为异步的原因,在这一整个loginRouter执行的过程中,在遇到await userdbconnection.query(“SELECT password FROM user WHERE username=?”, [username], function(err, result)这一行的时候,并不会等它执行完毕,会先执行最下面的console.log(resultOuter)而此时,resultOuter=getPassword并没有执行,所以外面的resultOuterundefined,但是虽然我知道是这样,我查了好多办法让userdbconnection.query先执行,然后再执行console.log就是不行,各位有没有什么办法,可以让我把function里面的result传到外面去呢?或者是让userdbconnection.query先执行,然后再执行console.log

图片描述

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

打小就很酷 2022-09-11 23:18:08

你用了 async await 代码不应该再用callback了吧

try{
  let result = userdbconnection.query(“SELECT password FROM user WHERE username=?”, [username]);
//todo  写原来callback里面的逻辑
}catche(error){

}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文