Я определил мой крюк beforeCreate следующим образом:Sequelize создать модель с beforeCreate крючком
module.exports = function (sequelize, DataTypes) {
var userSchema = sequelize.define('User', {
// define...
});
userSchema.beforeCreate(function (model) {
debug('Info: ' + 'Storing the password');
model.generateHash(model.password, function (err, encrypted) {
debug('Info: ' + 'getting ' + encrypted);
model.password = encrypted;
debug('Info: ' + 'password now is: ' + model.password);
// done;
});
});
};
и когда я создаю модель
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, the password is ' + user.password);
}).catch(function (err) {
// catch something
});
Теперь то, что я получаю от этого
Info: Storing the password +6ms
Info: hashing password 123123 +0ms // debug info calling generateHash()
Executing (default): INSERT INTO "Users" ("id","email","password","name","verified","verifyToken","updatedAt","createdAt") VALUES (DEFAULT,'[email protected]','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 now is: $2a$10$6jJMvvevCvRDp5E7wK9MNuSRKjFpieGnO2WrETMFBKXm9p4Tz6VC. +0ms
Info: after, the password is 123123 +3ms
Кажется, что каждая часть кода работает. Создание пользовательской схемы вызовет beforeCreate, который правильно генерирует хеш-код для пароля .... кроме того, что он не писал в базу данных!
Я уверен, что у меня отсутствует очень важная и OBVIOUS часть кода, но я просто не могу найти, где проблема (aghh). Любая помощь ценится!
это работает! sry не может +1 из-за низкой репутации .... – Alon
@ user2242178 не волнуйтесь, рад слышать, что он решил вашу проблему :-) – robertklep
Спасибо. Я не видел этого в документации, связанной с продолжением, и это мешало моему серверу отвечать. – Danielo515