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

时间:2013-02-19 21:59:54

标签: sql node.js

我正在尝试获取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);
  })
}

这里有什么问题?

1 个答案:

答案 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中传递一个回调函数。