我正在尝试获取SQL查询的结果,以便在我的代码中的其他位置使用它,但我无法弄清楚如何将它们删除。我有嵌套函数所以我试图通过两次返回调用来解决它,但是出来的是无效的。
var users = getUsers();
function getUsers(req, res){
dbConnect(req,res);
return connection.query('SELECT * FROM USERS', function selectAll(err, rows, fields) {
if (err) {
throw err;
}
for (var i in rows) {
console.log(rows[i]);
}
return rows;
dbClose(req,res);
})
}
这里有什么问题?
答案 0 :(得分:4)
connection.query是一个异步函数。
rows
仅在selectAll
函数中可用。如果您想对行执行某些操作,则需要从selectAll
。
users
将是未定义的,因为函数getUsers
本身不返回任何内容(并且不能返回行。
而不是做
users = get Users();
doSomethingWithUsers(users);
改为:
getUsers();
function getUsers(req, res){
dbConnect(req,res);
return connection.query('SELECT * FROM USERS', function selectAll(err, rows, fields) {
if (err) {
throw err;
}
for (var i in rows) {
console.log(rows[i]);
}
doSomethingWithUsers(rows);
dbClose(req,res);
})
}
或者在传递结果的getUsers中传递一个回调函数。