Hỏi về hàm pre() trong mongoose.



  • Các anh chị đi trước cho e hỏi hàm pre trong mongoose là hàm xử lý trước khi data được thực hiện trong mongoose.
    E được biết nó chỉ là middleware nhưng e thắc mắc là làm sao kiểm soát dữ liệu giữa request gửi lên và check nó với cơ sở dữ liệu.
    E đang làm với passport khi trước khi lưu e muốn nó mã hóa dữ liệu từ request gửi vào.

    E muốn hỏi hàm đó có ý nghĩa gì và làm sao để e có thể lấy password từ request .

    E viết như này mà nó ko chạy

    userSchema.pre("save", function (next) {
        // trên này bạn có thể bắn vào 1 đối số ví dụ 
        var hashedPassword = passwordHash.generate(password, {
            algorithm: "SHA-256",
            saltLength: 12,
            iterations: 1
        });
    
        this.password = hashedPassword;
        console.log(hashedPassword);
        next();
    });
    

    Do e chưa hiểu lên bị sai ai có thể chỉ e ý nghĩa của nó với ạ.


  • Global Moderator

    @Tran-Hoang-Hiep Nó không chạy ở đây có nghĩa như nào bạn ? Khi sử dụng User.create() thì bản ghi có được lưu vào cơ sở dữ liệu ko ? Hàm console.log(hashedPassword) có in ra thông tin gì ko ?

    Về bản chất thì hàm pre ở đây là một trạng thái trong lifecycle của một đối tượng mongoose trước khi đối tượng đó được lưu trữ vào csdl.

    Tech-nông
    Twitter: @nhubaovu
    Profile: about.me/vunb

    0


  • @Tran-Hoang-Hiep

    userSchema.pre("save", function (next) {
    // trên này bạn có thể bắn vào 1 đối số ví dụ
    var hashedPassword = passwordHash.generate(this.password, { //this.password chính là req pass mà bạn gửi lên
    algorithm: "SHA-256",
    saltLength: 12,
    iterations: 1
    });

    this.password = hashedPassword;
    console.log(hashedPassword);
    next();
    

    });


Log in to reply