问题描述使用await可以,使用传统的回调为什么不行?相关代码 Article.find({}).skip(skip).limit(sizes)
.exec((err, docs) => { if(err) {
ctx.body = { code: -1, msg: err
}
}else {
ctx.body = { code: 0, data: docs
} console.log(dos) //有数据,但是前端404
}
})router.get('/getArticles', async (ctx) => { let { sizes, pageNum } = ctx.query
sizes = Number(sizes)
pageNum = Number(pageNum) const skip = (pageNum - 1) * sizes const data = await Article.find({}).skip(skip).limit(sizes)
//这样可以拿到
ctx.body = { code: 0,
data
}
})你期待的结果是什么?实际看到的错误信息又是什么?如果就是用回调,不用await该怎么改才正确?
1 回答
www说
TA贡献1775条经验 获得超8个赞
因为你的上一段代码是中回调是异步执行的,本身Article.find({}).skip(skip).limit(sizes).exec(...)这个这调用会一闪而过,koa2的中间件管道会瞬间执行完毕,给前端响应. 等你数据查询回来,回调被调用的时候,ctx已经无意义.
添加回答
举报
0/150
提交
取消