Обновление пароля в базе данных mongodb, mongoose - PullRequest
0 голосов
/ 28 августа 2018

У меня есть этот маршрут

</p>

<code>  router.patch("/me/update-password", authenticate, (req, res) =>{

    let newPassword = _.pick(req.body, 'password');
    const newP = newPassword.password;

       User.findByCredentials(req.user.username, req.user.password).then((user) => {  
        user.password = newP;
        user.save().then(() => {
    res.send(user);
  }).catch((e) => {
    res.status(400).send(e);
  });
  });
});

/////////////////////////////////////////////////////////////////////////////
    UserSchema.statics.findByCredentials = function (username, password) {
  var User = this;

  return User.findOne({username}).then((user) => {
    if (!user) {
      return Promise.reject();
    }

    return new Promise((resolve, reject) => {
      // Use bcrypt.compare to compare password and user.password
      bcrypt.compare(password, user.password, (err, res) => {
        if (res) {
          resolve(user);
        } else {
          reject();
        }
      });
    });
  });
};
//////////////////////////////////////////////////////////////////



    UserSchema.pre('save', function (next) {
  let user = this;

  if (user.isModified('password')) {
    bcrypt.genSalt(10, (err, salt) => {
      bcrypt.hash(user.password, salt, (err, hash) => {
        user.password = hash;
        next();
      });
    });
  } else {
    next();
  }
});
</code>

Я нахожу имя пользователя и пароль аутентифицированного пользователя, а затем хочу отправить новый пароль, который я сохраняю как newP.

Я хочу обновить хеш пароля, засолить его и затем сохранить, поэтому я попытался использовать метод user.save (), который хэширует и солит пароль. Но когда я отправляю запрос патча, он не заканчивается.
Кто-нибудь знает почему?

Я попробовал все, но я застрял.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...