我正在努力完成以下事项(应该是非常基本的,我必须遗漏一些微不足道的事情):
这是代码:
util.js
exports.execute = function( query){
if (connection) {
connection.query(query, function(err, rows, fields) {
if (err) throw err;
console.log("from Util - " + JSON.stringify(rows));
return JSON.stringify(rows);
});
}
};
repo.js
var q = "select * from xxx";
var response;
util.execute(q, function (err, r){
if (err){
throw err;
console.log(err);
}
else {
console.log(r);
res.contentType('application/json');
res.write(r);
res.end();
}
});
我的问题是,当util.js中的代码被调用时,我可以在控制台中看到json,它永远不会回到repo.js中的匿名回调函数。
我在这里做错了什么?
更新
谢谢Ben 我也在同一行找到了解决方案......这里是新代码:
repo.js:
var send_data = function (req, res, r){
res.contentType('application/json');
res.write(r);
res.end();
}
exports.all = function(req, res){
var q = "select * from XXX";
var response;
util.execute(req, res,q, send_data);
};
util.js:
exports.execute = function(req, res, query, callback){
if (connection) {
connection.query(query, function(err, rows, fields) {
if (err) throw err;
callback(req, res, JSON.stringify(rows)) ;
});
}
};
答案 0 :(得分:0)
util.execute只接受代码中的一个参数。它需要接受第二个回调参数才能以您的方式使用它。 (回调不是魔术,它们只是函数调用)
类似的东西:
exports.execute = function(query,callback){
if (connection) {
connection.query(query, function(err, rows, fields) {
if (err) throw err;
console.log("from Util - " + JSON.stringify(rows));
callback(null,JSON.stringify(rows));
});
}
};
如果您希望它的行为一致并接受错误参数,您可能需要填写:
exports.execute = function(query,callback){
if (connection) {
connection.query(query, function(err, rows, fields) {
callback(err,null);
console.log("from Util - " + JSON.stringify(rows));
callback(null,JSON.stringify(rows));
});
}
};