Проблема в том, что оно не меняет значение градуированного, когда 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()
});