node.js - Sequelize create model with beforeCreate hook -


i defined hook beforecreate following:

module.exports = function (sequelize, datatypes) {   var userschema = sequelize.define('user', {   // define...   });   userschema.beforecreate(function (model) {     debug('info: ' + 'storing password');         model.generatehash(model.password, function (err, encrypted) {       debug('info: ' + 'getting ' + encrypted);        model.password = encrypted;       debug('info: ' + 'password is: ' + model.password);       // done;     });   }); }; 

and when create model

  user.create({     name:           req.body.name.trim(),     email:          req.body.email.tolowercase(),     password:       req.body.password,     verifytoken:    verifytoken,     verified:       verified   }).then(function (user) {     debug('info: ' + 'after, password ' + user.password);       }).catch(function (err) {     // catch   }); 

now

info: storing password +6ms info: hashing password 123123 +0ms    // debug info calling generatehash() executing (default): insert "users" ("id","email","password","name","verified","verifytoken","updatedat","createdat") values (default,'wwx@test.com','123123','wwx',true,null,'2015-07-15 09:55:59.537 +00:00','2015-07-15 09:55:59.537 +00:00') returning *;  info: getting $2a$10$6jjmvvevcvrdp5e7wk9mnusrkjfpiegno2wretmfbkxm9p4tz6vc. +0ms info: password is: $2a$10$6jjmvvevcvrdp5e7wk9mnusrkjfpiegno2wretmfbkxm9p4tz6vc. +0ms info: after, password 123123 +3ms 

it seems every part of code working. creating user schema invoke beforecreate, generates hash code password.... except didn't write database!

i'm i'm missing important , obvious piece of code, can't find problem (aghh). appreciated!

hooks called in asynchronous fashion in sequelize, need call completion callback when you're done:

userschema.beforecreate(function(model, options, cb) {   debug('info: ' + 'storing password');       model.generatehash(model.password, function(err, encrypted) {     if (err) return cb(err);     debug('info: ' + 'getting ' + encrypted);      model.password = encrypted;     debug('info: ' + 'password is: ' + model.password);     return cb(null, options);   }); }); 

(alternatively, can return promise hook)


Comments