MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Voglio che la mia funzione pre('save') mangusta funzioni solo una volta

Potresti usare isModified metodo nel campo "password".

Lo uso in questo modo, eseguo bcrypt solo se la proprietà della password è stata modificata:

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();
  }
});