将SQL查询结果作为node.js中的variables返回

我试图抓住一个SQL查询的结果,以便在我的代码中的其他地方使用它,但我无法弄清楚如何让他们出去。 我有嵌套函数,所以我试图通过两个返callback用,但是出来是无效的。

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); }) } 

这里有什么问题?

connection.query是一个asynchronous函数。

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中传递一个callback函数。