Route.post () требует функцию обратного вызова, но получил [объект Object] - PullRequest
0 голосов
/ 02 января 2019

Я подключаю пользовательскую функцию промежуточного программного обеспечения для моего обработчика маршрута в экспрессе, но получаю вышеуказанную ошибку (название). Это почему? Вот мой код для промежуточного программного обеспечения:

const Joi = require("joi");

function validateCredentials(req, res, next) {
    const schema = {

      email: Joi.string()
        .max(1024)
        .required()
        .regex(/^([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$/),
      password: Joi.string()
        .min(6)
        .max(255)
        .required()
    };
  const result = Joi.validate({ email: req.body.email, password: req.body.password }, schema);
  if(!result.error) {
      return next();
  }
}

module.exports.validateCredentials = validateCredentials ;

Вот обработчик маршрута:

router.post('/api/signup', validateCredentials, passport.authenticate('local-signup'), (req, res) => {
    const response = {};
    response._id = req.user._id;
    response.email = req.user.local.email;
    res.send(response);
});

1 Ответ

0 голосов
/ 02 января 2019

Вы звоните next только тогда, когда проверка не проходит, когда есть ошибка.

Вы пробовали это?

if (!result.error) {
  return next();
} else {
  return next(result.error);
}
...