sql >> Database >  >> NoSQL >> MongoDB

Gehashte wachtwoordupdate met Mongoose Express

Als u findOneAndUpdate() . gebruikt probeer om bij te werken de pre("findOneAndUpdate") middleware om het wachtwoord te wijzigen vergelijkbaar met uw pre("save") . De pre("findOneAndUpdate") middleware wordt aangeroepen elke keer dat u Model.findOndAndUpate() . gebruikt om uw modellen bij te werken.

U kunt hetzelfde doen met updateOne() met pre("updateOne")

Voorbeeld:

// userSchema--------------------
...
userSchema.pre('save', async function (next) {
    try {
        if (!this.isModified('password')) {
            return next();
        }
        const hashed = await bcrypt.hash(this.password, 10);
        this.password = hashed;
    } catch (err) {
        return next(err);
    }
});

userSchema.pre('findOneAndUpdate', async function (next) {
    try {
        if (this._update.password) {
            const hashed = await bcrypt.hash(this._update.password, 10)
            this._update.password = hashed;
        }
        next();
    } catch (err) {
        return next(err);
    }
});

// changepass--------------------
...
if(valid){

    //" ?? update password and hash ?? "
    const result = await db.user.findOneAndUpdate(
        { username: req.body.username },
        { password: req.body.newPassword },
        { useFindAndModify: false }
    ); 
}


  1. Hoe kan ik mongodump gebruiken om records te dumpen die overeenkomen met een specifiek datumbereik?

  2. Het gemiddelde berekenen van de afgelopen 200 dagen in MongoDB-aggregatie en NodeJS

  3. MongoDB met Mongoid in Rails - Geospatiale indexering

  4. hoe een afbeelding in redis op te slaan met python / PIL