koa中ctx.body写在query回调中无法返回数据给前台
在koa中,用了MySQL 数据库,前台用 ajax POST 请求数据库数据时,若将 ctx.body表达式写在 query 表达式中用以返回查询的数据给前台,会报 404 错误。下图写法
若将 ctx.body 写在query 查询方法外,则正常,但是无法获开到数据库查询的数据。 这是怎么回事啊?? 该怎么解决,既不报404又能将查询到的数据返回给前台ajax。下图写法
|
免责声明:本内容仅代表回答会员见解不代表天盟观点,请谨慎对待。
版权声明:作者保留权利,不代表天盟立场。
|
|
|
|
1、在请求体外部声明一个变量接收查询语句返回值。
2、使用await new Promise把整个请求体包裹。
3、在回调方法中将查询到的返回值赋给提前声明好的变量,之后执行Promise的resolve方法。
之后就可以在请求体外部调用变量来获开从sql中查询到的数据。避免ctx.body在异步函数中会出现404的尴尬情况 |
|
|
|
|
如果我是你,我会在if(!err)后加一个else,在else中输出试试,你这个代码,如果sql出错了就没有输出了,只有正确才输出 |
|
|
|
|
//试试这样写varres=awaitconnection.query(巴拉巴拉巴拉).catch(err=>{console.log(error))}ctx.body=res.需要返回的变量感觉错误应该是你既然用了await就不会触发connection.query的回调函数//以上全是猜的,错了勿喷! |
|
|
|
|