невозможно отобразить сообщение об ошибке с помощью экспресс-валидатора - PullRequest
0 голосов
/ 28 января 2019

Я использую axios, экспресс-валидатор и bcryptjs для функции разрешения пользователю изменять свой пароль в своей учетной записи.Поле, с которым я проверяю, является тем, где пользователь должен ввести свой существующий пароль.Затем он хэширует их входные данные и проверяет их по хеш-паролю базы данных.При выполнении другой проверки я могу получить ответ на сообщение об ошибке через axios, но для этого не будет:

body("currentPass")
.custom((value, { req }) => {
  return User.findOne({ _id: req.user }).then(userDoc => {
    bcrypt.compare(value, userDoc.password).then(domatch => {
      if (!domatch) {
        return Promise.reject("no match");
      } 
    });
  });
})

Я получаю ошибку:

UnhandledPromiseRejectionWarning: нет совпаденийНеобработанное обещание отказа.Эта ошибка возникла либо из-за того, что внутри асинхронной функции не был выполнен блок catch, либо из-за отклонения обещания, которое не было обработано с помощью .catch ().(идентификатор отклонения: 3)

Если я добавлю блок перехвата, то, когда проверка не пройдена, сработает блок перехвата вместо Promise.reject

body("currentPass")
.custom((value, { req }) => {
  return User.findOne({ _id: req.user })
   .then(userDoc => {
    bcrypt.compare(value, userDoc.password)
    .then(domatch => {
      if (!domatch) {
        return Promise.reject("no match");
      } 
    })
    .catch(err => {
      console.log('catch block error');
    })
  });
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...