自然选择号舰长章北海 2018-04-26 15:42 采纳率: 0%
浏览 4200
已结题

关于nodejs的connection.query()方法异步特性问题

最近在开发一个微信小程序,采用nodejs后台,在一个读取MySQL数据库并返回数据给前端的场景上遇到了问题,描述如下,忘各位高手相助。 先看代码:
module.exports = ctx=>{
var mysql = require('mysql');
var connection = mysql.createConnection({
host: 'localhost',
user: 'root',
password: 'wxb7e2f16d9e113148',
database: 'yhytest'
});
connection.connect();
var a='ini';
var sql = 'SELECT * FROM yhytesttable';
//查
connection.query(sql, function (err, result) {
if (err) {
a = err.message;
return;
}
a = result["0"].name;
});
ctx.state.data = {
msg: a
}
}
因为connection.query()是异步的,所以不等它返回结果,ctx.state.data就会先一步执行,从而无法获取从数据库查询回来的数据。而如果我把ctx.state.data的赋值写在connection.query()的响应函数里面,ctx.state.data可以被正确赋值,但返回到前端又显示data是空的。不知道是什么原因,希望各位可以提供思路,感激不尽~

  • 写回答

3条回答 默认 最新

  • devmiao 2018-04-26 15:51
    关注
    评论

报告相同问题?

悬赏问题

  • ¥15 树莓派与pix飞控通信
  • ¥15 自动转发微信群信息到另外一个微信群
  • ¥15 outlook无法配置成功
  • ¥30 这是哪个作者做的宝宝起名网站
  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题