I defined my hook beforeCreate as following:
module.exports = function (sequelize, DataTypes) {
var userSchema = sequelize.define(\'User\', {
// define..
For newer versions of Sequelize, the hooks no longer have callback functions but promisses. Therefor the code would look more like the following:
userSchema.beforeCreate(function(model, options) {
debug('Info: ' + 'Storing the password');
return new Promise ((resolve, reject) => {
model.generateHash(model.password, function(err, encrypted) {
if (err) return reject(err);
debug('Info: ' + 'getting ' + encrypted);
model.password = encrypted;
debug('Info: ' + 'password now is: ' + model.password);
return resolve(model, options);
});
});
});
Hooks are called in an asynchronous fashion in Sequelize, so you need to call the completion callback when you're done:
userSchema.beforeCreate(function(model, options, cb) {
debug('Info: ' + 'Storing the password');
model.generateHash(model.password, function(err, encrypted) {
if (err) return cb(err);
debug('Info: ' + 'getting ' + encrypted);
model.password = encrypted;
debug('Info: ' + 'password now is: ' + model.password);
return cb(null, options);
});
});
(alternatively, you can return a promise from the hook)