我应该从Node.js Express返回回调吗?

时间:2018-02-03 16:35:24

标签: javascript node.js express

我想知道在这个示例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;
  });
}

2 个答案:

答案 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)
})