将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函数。