我有以下代码:

User.findById(id, function(err, user) {
    //blah blah
});


findById方法在User模块中定义。看起来像这样:

exports.findById = function(id,callback) {
    connection.query("SELECT * FROM usertable", function (err, rows, fields) {
            if (err) throw err;
            callback(rows);
        });
}


由于findById()方法的回调具有两个参数,即erruser,所以我想知道是否已经以正确的方式定义了该函数。代码会正常工作还是我必须以其他方式将参数传递给回调?

最佳答案

如果遇到错误,则需要将err传递给回调,否则将null作为第一个参数,然后传递rows

exports.findById = function(id,callback) {
    connection.query("SELECT * FROM usertable", function (err, rows, fields) {
            if (err) return callback( err );
            return callback(null, rows);
        });
}


另外,由于您没有在connection.query回调中进行任何转换/修改,因此您可以直接将findById回调直接传递给connection.query

exports.findById = function(id,callback) {
    connection.query("SELECT * FROM usertable", callback);
}

10-06 05:26
查看更多