MongoDB
 sql >> Teknologi Basis Data >  >> NoSQL >> MongoDB

Pembaruan kata sandi hash dengan luwak express

Jika Anda menggunakan findOneAndUpdate() untuk memperbarui, coba gunakan pre("findOneAndUpdate") middleware untuk mengubah kata sandi yang mirip dengan pre("save") Anda . pre("findOneAndUpdate") middleware akan dipanggil setiap kali Anda menggunakan Model.findOndAndUpate() untuk memperbarui model Anda.

Anda dapat melakukan hal yang sama dengan updateOne() dengan pre("updateOne")

Contoh:

// 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. Mengapa Spring ReactiveMongoRepository tidak memiliki metode penyimpanan untuk Mono?

  2. Keuntungan dari indeks unik di MongoDB

  3. MongoDB / Morphia menyimpan id teknis sebagai ObjectId meskipun itu adalah String di Java

  4. MongoDB di Azure:Bagaimana Cara Memilih Jenis Instans yang Tepat?

  5. fungsi findOne luwak mengembalikan tidak ditentukan