koa中ctx.body写在query回调中无法返回数据给前台

在koa中,用了MySQL 数据库,前台用 ajax POST 请求数据库数据时,若将 ctx.body表达式写在 query 表达式中用以返回查询的数据给前台,会报 404 错误。下图写法

587ee7040001c86405000264.jpg

587ee7050001e99405000230.jpg

若将 ctx.body 写在query 查询方法外,则正常,但是无法获取到数据库查询的数据。 这是怎么回事啊?? 该怎么解决,既不报404又能将查询到的数据返回给前台ajax。下图写法

587ee728000143c205000272.jpg

587ee7290001505705000186.jpg



野生安乃近
浏览 5351回答 5
5回答

samuel_sx

1、在请求体外部声明一个变量接收查询语句返回值。2、使用await new Promise把整个请求体包裹。3、在回调方法中将查询到的返回值赋给提前声明好的变量,之后执行Promise的resolve方法。之后就可以在请求体外部调用变量来获取从sql中查询到的数据。避免ctx.body在异步函数中会出现404的尴尬情况

wblovezqy

如果我是你,我会在if(!err)后加一个else,在else中输出试试,你这个代码,如果sql出错了就没有输出了,只有正确才输出

陈建芳

我也遇到了,请问解决了吗

LB0

//试试这样写 var res = await connection.query(巴拉巴拉巴拉).catch( err => {     console.log(error) )} ctx.body = res.需要返回的变量 感觉错误应该是 你既然用了await 就不会触发 connection.query的回调函数 //以上全是猜的,错了勿喷!
打开App,查看更多内容
随时随地看视频慕课网APP