CNode

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

问答
Xxialexiatian发布于10 年前最后回复10 年前3 回复8724 浏览0 收藏

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

查看回复

回复 (3)

M
magicdawn#1·10 年前
const pify = require('promise.ify')

...
const results = await pify(connection.query, connection)(sql, params)
const rows = results[0]
ctx.body = results
...
Z
zbsccc#2·10 年前

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

Snip20170119_8.png

A
andyhu#3·10 年前

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

参与回复
登录后即可参与回复。登录