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
Post a Comment