无法使用Express Validator在视图中显示错误消息

时间:2019-01-28 16:32:23

标签: javascript node.js axios express-validator

我正在使用axios,express validatorbcryptjs来实现让用户在其帐户区域中更改其密码的功能。我要检查的字段是用户需要输入其现有密码的字段。然后,它对输入进行哈希处理,并对照数据库的哈希密码对其进行检查。在进行其他验证时,我能够通过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:没有匹配项Unhandled Promise   拒绝。该错误是由抛出异步内部引起的   没有捕获块或拒绝承诺   未使用.catch()处理。 (拒绝ID:3)

如果我添加了catch块,则当验证失败时,将触发catch块而不是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');
    })
  });
})

0 个答案:

没有答案