【发布时间】:2015-06-19 00:52:54
【问题描述】:
也许我一直盯着我的代码太久了,或者也许我在别处使用了太多回调或其他什么,但我无法弄清楚这个的逻辑。我知道rows 中包含的值是正确的,因为在该回调函数中使用util.inspect(rows)。我只是不知道如何把它带回表面,可以这么说。 dbHandler() 从传递参数的其他函数调用,并期望返回结果。
任何见解都会非常有帮助。
将 node.js 与 Express 和 mysql 包一起使用,如果这样会有所不同的话。
function dbHandler(req, res, params) {
pool_user.getConnection(function (err, connection) {
if (err) {
connection.release();
res.json({
"code" : 100,
"status" : "Error in connection database"
});
return;
}
connection.query(params.query_string, function (err, rows) {
connection.release();
if(!err) {
res.json(rows); // <<--- I want to get ahold of the value of `rows`
//console.log(util.inspect(rows));
}
});
connection.on('error', function(err) {
res.json({
"code" : 100,
"status" : "Error in connection database"
});
return;
});
});
}
【问题讨论】:
-
异步。您在回调完成之前访问全局。
-
您在哪里访问
umadbro?如果您不向我们展示代码中umadbro意外变为undefined的部分,我们将无法帮助您修复它。 -
@Bergi 抱歉,我正在进行增量帖子编辑。 :P 我没有使用
umadbro。我的问题因其他原因而感到困惑(我的错)。 -
好吧,不管现在的问题:
res.json似乎非常擅长“将价值带回表面”,不是吗?如果那些调用dbHandler的其他函数,那么他们应该只提供自己的回调,然后需要调用而不是res.json。
标签: javascript node.js scope