MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Актуализация на хеширана парола с mongoose express

Ако използвате findOneAndUpdate() за да актуализирате, опитайте да използвате pre("findOneAndUpdate") междинен софтуер за промяна на паролата, подобна на вашата pre("save") . pre("findOneAndUpdate") междинният софтуер ще се извиква всеки път, когато използвате Model.findOndAndUpate() за актуализиране на вашите модели.

Можете да направите същото с updateOne() с pre("updateOne")

Пример:

// 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. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. pymongo не може да се свърже с база данни на отдалечен сървър

  2. MongoDB $setUnion

  3. 10 въпроса, които да зададете (и да отговорите), когато хоствате MongoDB на AWS

  4. Импортирайте CSV данни като масив в MongoDB с помощта на mongoimport

  5. Възможно ли е да се създаде нова база данни в MongoDB с Mongoose?