Buscar..


Introducción

Es posible que tengamos que modificar los atributos antes de crear el registro. Mi caso de uso fue cifrar la contraseña cuando se crea el usuario.

Hooks doc está aquí http://docs.sequelizejs.com/en/v3/docs/hooks/#instance-hooks . Documenta la forma de usarlo con una biblioteca / función que devuelve una Promise . Pero el caso de uso con una devolución de llamada no está claramente documentado.

Sintaxis

  • antes de crear (instancia)
  • beforeCreate (instancia, opciones, fn)

Ejemplo de trabajo con una biblioteca que no usa Promesa

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);
  });    
});

Ejemplo de trabajo con una biblioteca que no usa Promesa

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
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow