koa中ctx.body写在query回调中无法返回数据给前台
发布于 8 年前 作者 xialexiatian 8265 次浏览 来自 问答

在koa中,用了MySQL 数据库,前台用 ajax POST 请求数据库数据时,若将 ctx.body表达式写在 query 表达式中用以返回查询的数据给前台,会报 404 错误。下图写法 1.png 2.png 若将 ctx.body 写在query 查询方法外,则正常,不报404,但是无法获取到数据库查询的数据。 这是怎么回事啊?? 该怎么解决,既不报404又能将查询到的数据返回给前台ajax。下图写法 3.png 4.png

3 回复
const pify = require('promise.ify')

...
const results = await pify(connection.query, connection)(sql, params)
const rows = results[0]
ctx.body = results
...

就是这么蛋疼,我折磨了好几天,发现ctx.body不能写在function里。 最后解决办法是在你29和30行之间写一个let result 查询结果里写 result = rows 然后在最后在ctx.body = result

Snip20170119_8.png

把callback类的函数直接Bluebird.promisify一下再await来用吧

回到顶部