函数中的MySQL数组不返回



我正在使用一个函数从多个MySQL表中收集数据,以构建一个将返回的数组。我不知道为什么,但当我返回下面的代码时,我得到了undefined,尽管当我使用console.log时,所有数据都显示正确?我不确定这是否是因为return语句比MySQL语句快,但我认为Node会等到所有SQL语句都完成后再返回?任何建议都会很棒。

function testfunction(){

let variable = "false",
variable2 = "false";

connection.query("SELECT COUNT(*) AS rowCount FROM `users`;",[], function (error, rows, fields) {
if (error) {console.log(error);}
let users = rows[0].rowCount;
connection.query("SELECT COUNT(*) AS rowCount FROM `towns`",[], function (error, rows, fields) {
if (error) {console.log(error);}
let towns = rows[0].rowCount;
let array = {
"data":{
"users":users,
"towns":towns,
"variable1":variable,
"variable2":variable2
}
};
console.log(array)
return array;
});
});
};

输出:
返回输出

undefined

控制台日志输出

{ data:
{ towns: 1, users: 1, variable1: 'false', variable2: 'false' } }

提前感谢您的帮助,这不是我以前遇到过的问题,我很想知道我做错了什么:(

Hi正如我所看到的,您在查询中使用了嵌套方法。我建议使用async/await使它更好。试试下面的方法。

let variable = "false", variable2 = "false";
const users = await connection.query( 'SELECT COUNT(*) AS rowCount FROM `users`' );
const towns = await connection.query( 'SELECT COUNT(*) AS rowCount FROM `towns`' );
let array = {
"data":{
"users":users,
"towns":towns,
"variable1":variable,
"variable2":variable2
}
};
console.log(array)

最新更新