koa中ctx.body写在connection.query中无法返回数据到前端?
最近在写一个koa
的login
,用的是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.body
和ctx.message
,可是不管尝试了什么方法,这个result
只要一离开function
之外就变成了undefined
,我测试了一下,因为异步的原因,在这一整个loginRouter
执行的过程中,在遇到await userdbconnection.query(“SELECT password FROM user WHERE username=?”, [username], function(err, result)
这一行的时候,并不会等它执行完毕,会先执行最下面的console.log(resultOuter)
而此时,resultOuter=getPassword
并没有执行,所以外面的resultOuter
是undefined
,但是虽然我知道是这样,我查了好多办法让userdbconnection.query
先执行,然后再执行console.log
就是不行,各位有没有什么办法,可以让我把function
里面的result
传到外面去呢?或者是让userdbconnection.query
先执行,然后再执行console.log
?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
你用了 async await 代码不应该再用callback了吧