var mongoose = require('mongoose'); var Schema = mongoose.Schema; var bcrypt = require('bcrypt'); var UserSchema = new Schema({ email:{ type: String, required: true, unique: true }, password: { type: String, required: true } }); UserSchema.pre('save', function(next){ var user = this; if(this.isModified('password') || this.isNew){ bcrypt.genSalt(128, function (err, salt){ if(err){ return next(err); } bcrypt.hash(user.password, salt, function(err, hash){ if(err){ return next(err); } user.password = hash; next(); }); }); } else{ return next(); } }); UserSchema.methods.comparePassword = function(passw, cb){ bcrypt.compare(passw, this.password, function(err, isMatch){ if(err){ return cb(err); } cb(null, isMatch) }); }; module.exports = mongoose.model('User', UserSchema);