功能不返回结果

rob*_*kos 1 javascript

我试图将一些复杂性重构为一个名为getData的函数,但调用此函数的代码似乎没有得到结果.

function getData(sql) {
  pool.getConnection(function(err, connection) {
    if (err) return;
    connection.query(sql, function(err, rows) {
      if (err) return;
      if (rows.length > 0) {
        console.log(rows);    // This outputs result from table
        return rows;
      } else {
        return [{"error":"Not found"}];
      }
    });
    connection.end();
  });
}
Run Code Online (Sandbox Code Playgroud)

但是,当从这样的函数调用它时,我会返回undefined,即使函数内部的代码工作正常.

app.get('/1/employees/past', function(req, res, next) {
    var rows = getData("select * from users");
    res.json(rows);
})
Run Code Online (Sandbox Code Playgroud)

ale*_*lex 5

return是从内部函数返回的,它不影响外部函数.

您需要捕获并返回它,并且看到它似乎与回调一起工作,您需要传递一个额外的回调getData().

像这样......

function getData(sql, callback) {
     // ...    
     connection.query(sql, function(err, rows) {
         // ...
         callback && callback(rows); // etc
     });
     // ...
}
Run Code Online (Sandbox Code Playgroud)

如果你想成为安全,确保回调实现[[Call]]typeof(链接到自己的博客文章).