«Заявления» express-validation
по сути являются функциями промежуточного программного обеспечения.Это означает, что каждый из них возвращает функцию с подписью function(req, res, next)
.Эти функции предназначены для вызова экспресс-API.
Что происходит в вашем первом примере, так это то, что каждый оператор просто возвращает функцию, которая на самом деле не вызывается.Ваш первый пример эквивалентен этому:
module.exports.register = function(req,res,next){
function(req,res,next) {...}
function(req,res,next) {...}
function(req,res,next) {...}
function(req,res,next) {...}
const errors = validationResult(req);
if(!errors.isEmpty()){
sendResponse(res,{status: 422 ,body:errors});
}
else{
next();
}
}
Теоретически вы можете переформатировать свой первый пример и заставить его работать, но вы, вероятно, закончите адом обратного вызова, и я бы не советовал.Что-то из этих строк:
module.exports.register = function(req,res,next){
(body('fname').isLength({ min: 3, max:20 }).withMessage('First name must have minimum 3 chars and maximum 20 chars.').isAlpha().withMessage('First name has non-alphabetic characters.')) (req, res,
(body('email').trim().isEmail().withMessage('Not in the email format')) (req, res,
(sanitizeBody('fname').trim().escape()) (req, res,
(sanitizeBody('email').trim().escape()) (req, res, function(req, res, next) {
const errors = validationResult(req);
if(!errors.isEmpty()){
sendResponse(res,{status: 422 ,body:errors});
}
else{
next();
}
})))));
}
Не используйте этот код, это всего лишь пример того, как могут быть неприятные вещи.Используйте массив, как во втором примере.