Hooks are used to add any functionality before or after our JavaScript methods like save, create etc. Using hooks we are able to write the code that can be run before or after save method.
Suppose you have a User model, in that you have a password field, so we need to encrypt the password before saving it to the database. In that situation we can use hooks.
For example i have a model/user.js file with the code below:
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var UserSchema = new Schema({
username: { type: String, unique: true, require: true},
email: { type: String, require: true},
password: { type: String, require: true},
role: {type: String }
});
UserSchema.pre('save', function(next) {
console.log("I am a hook inside User model")
this.password = require('crypto').createHash('sha1').update(this.password).digest('base64');
next();
});
var User = mongoose.model('User', UserSchema);
module.exports = User;
Now whenever you call save() method upon User model first it will execute the functionality of the pre hook, which means before saving the data in the collection , it will encrypt the password and then it will be saved.To confirm you can see the output in console.
0 Comment(s)