Получает данные об ошибках и имеет аргументы, необходимые при попытке выполнить bcrypt compare () - PullRequest
0 голосов
/ 17 октября 2019

Я получаю сообщение об ошибке при попытке сравнить мой хешированный пароль, который хранится в базе данных, с введенным пользователем паролем.

Я попытался использовать функцию вместо жирной стрелки, попытался привести в порядок мои req.body.password и попытался просмотреть документы bcrypt, но, похоже, я все написал правильно.

app.post("/user/login", (req, res, next) => {
  User.find({email: req.body.email}).then(user => {
    if(!user) {
      return res.status(401).json({
        message: `Couldn't find user`
      });
    }
    console.log(req.body.password);
    console.log(user);
    return bcrypt.compare(user.password, req.body.password).then((resp) => {
      console.log(resp);
      if (!resp) {
        return res.status(401).json({
          message: `Wrong password`
        });
      }
      console.log('JWT created')
      const token = jwt.sign(
        { email: user.email, userId: user._id, userName: user.userName },
        process.env.JWT_SECRET,
        { expiresIn: '1h' }
      );
      res.status(200).json({
        message: 'JWT generated',
        token
      }).catch( err => {
        return res.status(401).json({
          message: 'JWT not created'
        })
      })
    })
  })

Я хочу, чтобы функция bcrypt.compare работала так, как должна, но выдает ошибку

UnhandledPromiseRejectionWarning: Error: data and hash arguments required
    at Object.compare


UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). (rejection id: 2)
...