我想知道在这个示例Express函数的末尾是否需要返回。我已经看过很多例子,其中包含的回报并没有包括在内。 (我也不确定为什么将结果转换为字符串然后再转换为JSON,但这是一个不同的问题。)
/**
* @param {string} id
* @param {function} callback
*/
function getPersonCount (id, callback) {
connection.query('SELECT COUNT(id) as count FROM people WHERE id=?;', [id], function(err, result) {
var string = JSON.stringify(result);
var json = JSON.parse(string);
var count = json[0].count;
callback(count);
return callback;
});
}
答案 0 :(得分:2)
要明确:您正在从callback
传入的匿名回调中返回query
。
TL; DR不,你几乎肯定不想归还它,但如果你这样做可能是无害的。
它与Express无关,它与query
函数有关。如果它期望你给它的回调返回一个它将执行某些操作的函数,那么你应该返回一个合适的函数(callback
是否该函数是一个问题,我怀疑答案是否定的,但是...)。如果没有,不,你不应该。
我会说赔率非常高,query
完全忽略了你传递回调的返回值。
答案 1 :(得分:1)
您只需要返回回调示例:
function getPersonCount (id, callback) {
connection.query('SELECT COUNT(id) as count FROM people WHERE id=?;', [id], function(err, result) {
var string = JSON.stringify(result);
var json = JSON.parse(string);
var count = json[0].count;
callback(count);
});
}
要使用此功能,您必须执行以下操作:
getPersonCount (id, function(result){
//here you can use the data from your function
console.log(result)
})