nodejs, изменить профиль, пароль.Мангуст и MongoDB - PullRequest
0 голосов
/ 20 мая 2018

Проблема в том, что оно не меняет значение градуированного, когда req.body.password пусто.Однако окончание также должно быть изменено, хотя req.body.password пусто.Но пароль не должен меняться при обновлении req.body.password и одновременно градуированного значения.Таким образом, значение Graduated не изменяется, если пользователь не изменил пароль и оставил его пустым.Любое предложение?

router.post('/edit', isAuthenticated, function (req, res, next) {
    User.findOneAndUpdate({_id: req.user._id}, {$set:{

        email: req.body.email,
        name: req.body.name,
        phone: req.body.phone,
        classc: req.body.classc,
        major: req.body.major,
        minor: req.body.mino,
        linkedin: req.body.linkedin,
        bio: req.body.bio
}
 },{ new: true }, function (err, user, done){

        if (err) {
          return err;
        } 

        else {

            if (typeof req.body.graduated == 'undefined') {
               user.graduated = false;


            } else if (typeof req.body.graduated == 'string') {
                user.graduated = true;

            }

          if (req.body.password) {
            user.password = req.body.password;
            user.save()
          } else {

          }

        }
        res.redirect('/profile');
    });

Это моя функция предварительного обновления

userSchema.pre('save', function(next) {      
    console.log                                                                                                                                  
    if(this.password){                                                                                                                                                                                                                                                                                      
        this.password  = bcrypt.hashSync(this.password, bcrypt.genSaltSync(8),null);                                                                                                             
    }



    next()                                                                                                                                                                     
}); 

1 Ответ

0 голосов
/ 20 мая 2018

Чтобы сохранить значения пароля и градуированные значения независимо друг от друга, введите команду user.save() после обеих проверок, а не внутри одной из них.

if (err) {
    return err;
} 

else {
    if (typeof req.body.graduated == 'undefined') {
       user.graduated = false;
    } else if (typeof req.body.graduated == 'string') {
        user.graduated = true;
    }

    if (req.body.password && req.body.password !== "") {
        user.password = req.body.password;
    } else {

    }

    user.save()
}
res.redirect('/profile');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...