2013-02-19 172 views
1

我试图抓住为了在我的代码的其他地方使用它的SQL查询结果的变量,但我只是无法弄清楚如何让他们出去。我嵌套函数,所以我试图通过两次调用return来得到它,但是出来的是无效的。返回SQL查询结果中的node.js

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

这里有什么问题?

回答

4

connection.query是一个异步函数。

rows只是selectAll函数中使用。如果您想对行进行操作,您需要从selectAll开始。

users会而不是做

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中传递一个回调函数以获得结果。

+0

我尝试在全选设置变种的用户=行,但由于内全选代码后执行,结果回来后,getUsers后不对()返回给你,没有工作,要么 – karoma 2013-02-19 22:09:57

+0

。 – 2013-02-19 22:11:37