创建了自定义模块,该模块正在从mysql获取数据,并且工作正常。 但是当我将结果数据分配给某个对象变量时,它为空! 这是我的代码完整代码:
var mysql = require('mysql');
var con = mysql.createConnection({
host: "localhost",
user: "root",
password: "",
database: "test",
});
con.connect(function(err) {
if (err) throw err;
console.log("local module connected !");
});
module.exports = {
apple: () => {
console.log("---------------------------------");
var cars= {};
con.query("SELECT * FROM test", function (err, result, fields) {
if (err) throw err;
console.log( "Inside con.query : Type is : " + typeof result );
cars = result;
});
// return resultsdata;
console.log( "Type is : " + typeof cars );
console.dir( cars );
console.log("---------------------------------");
}
};
之后
cars = result;
假设显示所有分配的对象 但是它显示为空/空。 任何建议或帮助,将不胜感激!
答案 0 :(得分:0)
因为在执行回调函数后查询执行的结果可用。回调函数本质上是异步的。
因此,行var cars= {};
被执行并将cars
分配为空对象。然后,使用回调函数执行con.query...
行,并继续执行下一行,即您的console.logs
。由于回调函数可能尚未完成,因此cars = result;
尚未执行。
如果您可以将console.log
语句后的cars = result;
语句移到回调函数中,则会看到不同之处。