用koa获取到数据了,但是无法返回给前端?

发布于 2022-09-04 11:23:45 字数 973 浏览 8 评论 0

//router.js

clipboard.png

//controller.js

clipboard.png

//model.js

clipboard.png

省去了一些不必要的代码,我现在在浏览器中打开localhost/user,在终端里面能看到从数据库中取到的测试数据:

clipboard.png

但是页面上却是显示的404。跪求大神指导。。

------------------update------------------

应该是mongoose异步去数据库取数据的原因,但是在model.js里我已经用了promise了,还是先返回了。之所以状态码是404,貌似是因为koa封装ctx的时候response里默认了状态码是404,而并不是真的没有找到请求。

刚用了一下koa-mongo,但是把路由抽出去不放在app.js后又不能正确返回了,感觉也是异步的问题。。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

世界如花海般美丽 2022-09-11 11:23:45

router里需要等待Promise的返回,改下代码试试

router.get('/user', async function (ctx, next) {
    console.log('router', ctx)
    await articleController.article(ctx)
})

然后articleFn这个方法里ArticleModel前面加上return

懵少女 2022-09-11 11:23:45

这个问题应该是: 查询数据的行为是异步的, 我们需要在查询数据的代码前加一个await, 不然代码走到这里,没有得到异步操作的返回结果,所以默认就返回了404!请看代码:

clipboard.png

绝不服输 2022-09-11 11:23:45

别的没看懂。我就看懂了。你代码里面没有user啊。所以404啊

猫腻 2022-09-11 11:23:45

把你的数据放到this.body里面啊

倾听心声的旋律 2022-09-11 11:23:45

我也是同样的问题,你的问题解决了吗

koa2 前端post请求时,数据都能更新到数据库了,为什么响应头确实404

静谧幽蓝 2022-09-11 11:23:45

我遇到类似的问题,用Promise包装一下就可以了

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文