我试图将一些复杂性重构为一个名为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)
你return是从内部函数返回的,它不影响外部函数.
您需要捕获并返回它,并且看到它似乎与回调一起工作,您需要传递一个额外的回调getData().
像这样......
function getData(sql, callback) {
// ...
connection.query(sql, function(err, rows) {
// ...
callback && callback(rows); // etc
});
// ...
}
Run Code Online (Sandbox Code Playgroud)
如果你想成为安全,确保回调实现[[Call]]与typeof(链接到自己的博客文章).
| 归档时间: |
|
| 查看次数: |
60 次 |
| 最近记录: |