Closed crvargasu closed 4 years ago
Hola. En principio no veo nada malo en el código que incluiste. ¿Lo agregaste dentro del objeto que se pasa como tercer argumento a sequelize.define
? Otra cosa que podrías intentar es utilizar otro nombre de variable en vez de user
. Podría ser que tenga conflicto con alguna otra variable seteada en el mismo archivo (no lo veo tan probable, pero "por si acaso").
Al parecer está todo bien, solo se activa el código cuando se crea un usuario, y no cuando se edita la contraseña, a pesar de que en ambos persistan los datos en la bdd. Podrá haber una diferencia entre update y save?
La diferencia es precisamente que beforeUpdate
es sólo al actualizar, y beforeSave
es al crear o actualizar, por lo que debería funcionar bien. Aquí está la documentación: https://sequelize.org/master/manual/hooks.html
¿Probaste con otro campo? ¿Por ejemplo sólo el nombre del usuario? Para ver si se comporta como debería, o si tampoco funciona con otro campo. ¿Estás seguro de que el campo se llama contrasena
y no contraseña
? ¿La implementación del create es similar a la del update (en cuanto a formulario y/o manejo del usuario a modificar)? Son algunas de las cosas que se me ocurre verificar.
Hemos probado todo, ya revisamos el código con otro integrante del grupo y no sabemos que es en realidad. El update no nos funciona para nada, y el save solo para crear. Ya hemos checkeado y los nombres de las actualizaciones si persisten en la base de datos, solo no entra a la función.
Para los que lleguen a tener un problema similar, para actualizar la información del usuario se estaba usando model.update
en vez de instance.update
y el hook beforeSave
es un hook de instancia, por lo que no corría al actualizar el recurso.
Acá hay más información sobre los hooks si es que a alguien le interesa 👀
Hola, estoy implementando la parte del encriptado de la contraseña y al realizar la función hooks en el modelo no se entra a la beforeSave, lo tengo similar a lo mostrado en clases, de la siguiente manera:
hooks: {
beforeSave: async (user) => {
console.log("se llego aca");
if (user.changed('contrasena')) {
console.log("entramos aca");
}
}
}
Por qué motivo podría no estar entrando a la funcion? Ya revisé la bdd y se graban correctamente los cambios