sequelize.js
Изменение атрибутов в beforeCreate hook
Поиск…
Вступление
Возможно, нам придется изменить атрибуты до создания записи. Моим вариантом использования был пароль для шифрования при создании пользователя.
Крючки doc находятся здесь http://docs.sequelizejs.com/en/v3/docs/hooks/#instance-hooks . Он документирует способ использования его с библиотекой / функцией, которая возвращает Promise . Но прецедент с обратным вызовом явно не задокументирован.
Синтаксис
- beforeCreate (экземпляр)
- beforeCreate (instance, options, fn)
Пример работы с библиотекой, которая не использует Promise
function cryptPassword(password, callback) {
bcrypt.genSalt(SALT_WORK_FACTOR, function(err, salt) {
if (err)
return callback(err);
bcrypt.hash(password, salt, null, function(err, hash) {
return callback(err, hash);
});
});
}
User.beforeCreate((user, options, cb) => {
cryptPassword(user.password, (err, hash) => {
if (err) return cb(err);
user.password = hash;
// invoking the finish callback is important!
return cb(null, options);
});
});
Пример работы с библиотекой, которая не использует Promise
User.beforeCreate(function(user, options) {
return hashPassword(user.password).then(function (hashedPw) {
user.password = hashedPw;
});
})
Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow