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 ạ.
-
@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àmconsole.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ượngmongoose
trước khi đối tượng đó được lưu trữ vào csdl. -
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();
});