sequelize.js
Zmodyfikuj atrybuty w zaczepie beforeCreate
Szukaj…
Wprowadzenie
Może być konieczne zmodyfikowanie atrybutów przed utworzeniem rekordu. Mój przypadek użycia to szyfrowanie hasła podczas tworzenia użytkownika.
Dokument Hooks znajduje się tutaj http://docs.sequelizejs.com/en/v3/docs/hooks/#instance-hooks . Dokumentuje sposób użycia go z biblioteką / funkcją, która zwraca Promise . Ale przypadek użycia z wywołaniem zwrotnym nie jest wyraźnie udokumentowany.
Składnia
- beforeCreate (instancja)
- beforeCreate (instancja, opcje, fn)
Przykład pracy z biblioteką, która nie korzysta z 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);
});
});
Przykład pracy z biblioteką, która nie korzysta z 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
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow