MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

Cập nhật mật khẩu băm với mongoose express

Nếu bạn đang sử dụng findOneAndUpdate() để cập nhật, hãy thử sử dụng pre("findOneAndUpdate") phần mềm trung gian để sửa đổi mật khẩu tương tự như pre("save") của bạn . pre("findOneAndUpdate") phần mềm trung gian sẽ được gọi mỗi khi bạn sử dụng Model.findOndAndUpate() để cập nhật các mô hình của bạn.

Bạn có thể làm tương tự với updateOne() với pre("updateOne")

Mẫu:

// 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. gọi một bộ sưu tập mongo bằng cách sử dụng một biến

  2. Sử dụng $ theo nghĩa đen trong Golang-mgo

  3. Cách quản lý tài liệu trong MongoDB

  4. Mongo - Bỏ qua thuộc tính để được duy trì

  5. 8 cách để bắt đầu một ngày trong MongoDB