1

我试图获取 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);
  })
}

这里有什么问题?

4

1 回答 1

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

于 2013-02-19T22:06:24.367 回答