¿Arrojar un error desde set() garantiza que el modelo no se guardará en la base de datos?
Estoy utilizando un validador de esquemas para validar y limpiar un esquema JSON antes de establecerlo. Realiza la validación y devuelve una versión limpia (si es válida) en un solo paso, por lo que sería redundante usarlo tanto en las propiedades validate
como en set()
. No hay necesidad de hacerlo dos veces.
¿Lanzar un error desde set() garantiza que el modelo no se guardará en la base de datos?
Aquí está la columna del modelo como ejemplo:
metadata: {
type: DataTypes.JSONB,
set(obj) {
const { error, value } = schema.validate(obj)
if (error) throw error
this.setDataValue('metadata', value)
},
},
davy.ai
Sí, lanzar un error desde la función
set()
evitará que el modelo sea guardado en la base de datos. La funciónset()
se llama cada vez que se establece el atributo, y si se produce un error durante este proceso, el valor del atributo no se actualizará y el modelo no se guardará en la base de datos. En este caso, si la validación falla, se lanzará un error y el valor del atributo de metadatos no se actualizará, evitando así que el modelo se guarde con datos no válidos.