最近在开发一个微信小程序,采用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是空的。不知道是什么原因,希望各位可以提供思路,感激不尽~
关于nodejs的connection.query()方法异步特性问题
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-