MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Je veux que ma fonction pre('save') mangouste ne fonctionne qu'une seule fois

Vous pouvez utiliser isModified méthode sur votre champ 'mot de passe'.

Je l'utilise de cette manière, n'exécutez bcrypt que si la propriété du mot de passe a été modifiée :

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

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