微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在Mongoose方法上使用bcrypt时出现UnhandledPromiseRejectionWarning

如何解决在Mongoose方法上使用bcrypt时出现UnhandledPromiseRejectionWarning

尝试实施重置密码功能,并在执行此操作时始终出现UnhandledPromiseRejectionWarning: Error: Illegal arguments: undefined,string错误。我已经在其他项目中使用过此代码,并且可以完美地工作,但是由于某些原因,我似乎无法弄清楚为什么它会不断弹出,或者下面的代码可能有什么问题。

方法

UserSchema.methods.hashPassword = () => {
  return new Promise((resolve,reject) => {
    bcrypt.genSalt(10,(err1,salt) => {
      if (err1) {
        reject(err1);
      }
      bcrypt.hash(this.password,salt,(err2,hash) => { // <-- it appears to happen on this line at ".hash"
        if (err2) {
          reject(err2);
        }
        this.password = hash;
        resolve(hash);
      });
    });
  });
};

路线:

const resetPassword = async (req,res) => {

      // Update User
      const { password } = req.body;
      user.password = password;
      user.passwordResetToken = '';
      user.passwordResetExpires = moment().utcOffset(0);

      user.hashPassword().then(() => { <---- Happens here
        // Save Updated User to the Database
        user.save((error) => {
          if (error) {
            return res.status(500).json({
              success: false,message: 'An unexpected error occurred.',});
          }

          // Send Email Confirming Password Change to the User
          
        });
      });
    });
  });
};

解决方法

bcrypt也不适合我,但bcryptjs可以 删除bcrypt后尝试导入“ bcryptjs”,

您可以在这里https://www.npmjs.com/package/bcryptjs

然后将其导入到您的文件中,然后重试

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。