概述
前一阵子在开发一个网页端图片管理器的项目中,当时我遇到了一个问题:我查询数据库可以得到正确的查询结果,但发送给前端时前端却只能接收到空数组,后来经过思考,我怀疑可能是查询时的异步问题导致的,也就是query这个函数本身是异步的,从而导致发给前端的是空数组(发送比得到结果时间更早)。
后来经过尝试,我使用了async + await + Promise来解决这个问题,话不多说,上代码。
indexRouter.get('/show',async (ctx,next) => { //
返回图片列表
let statement = 'SELECT * FROM imgtable'
let list = [];
//
获得查询结果
list = await new Promise((resolve,reject)=>{
return query.query(statement,(e,data) => {
if (e) {
console.log('出错了')
throw e;
}
else{
// console.log(data)
resolve(data)
//
扔出去查到的数组
}
})
})
ctx.body = list
})
这里,new一个Promise对象并等待该对象中函数的执行,然后在return语句中执行查询,在查询成功时执行resolve,出错时抛出错误即可。
小生不才,如有错误之处,还望各位不吝赐教!q(≧▽≦q)
最后
以上就是热情钢笔为你收集整理的解决koa2与MySQL遇到的返回前端空的查询结果数组的问题的全部内容,希望文章能够帮你解决解决koa2与MySQL遇到的返回前端空的查询结果数组的问题所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复