Mongoose - метод пользователя, не меняющий пользователя - PullRequest
0 голосов
/ 17 февраля 2019

Маршрут

router.post('/users', (req, res, next) => {
  const user = new User()
  const { username, email, password } = req.body

  user.username = username
  user.email = email
  user.setPassword(password)

  user.save().then(() => res.status(200).send({ user })).catch(next)
})

Метод

User.methods.setPassword = function(password, next) {
  bcrypt.hash(password, 10).then(function(hash) {
    this.password = hash
  }).catch(err => err)
}

Метод должен был захватить пароль, отправленный в теле запроса, хэшировать его и установить поле ввода пароля в пользовательском экземпляре.Несмотря на то, что пароль хэшируется, он не устанавливается.Я думал, что это потому, что я использовал функции стрелок вокруг этого, но это не так.Что я делаю не так?

1 Ответ

0 голосов
/ 18 февраля 2019

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

//hashing a password before saving it to the database
Model.pre('save', function (next) {
    let users = this;
    if(users.password) {
        bcrypt.hash(users.password, 10, function (err, hash) {
            if (err) {
                return next(err);
            }
            users.password = hash;
            next();
        });
    }
});

Затем в контроллере

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