Closed bmarinb closed 6 years ago
En mi caso ocurre lo mismo, pero para una relación hasMany.
A nosotros nos funcionó agregando 'hooks: true', ojalá te sirva!
@abannura En qué tipo de asociación? al menos en belongsToMany no me ha funcionado con 'hooks: true'
Nos funcionó sin especificar onDelete: 'cascade', solo con hooks: true
No logré que funcionara modificando el modelo, pero sí al agregar onDelete: 'Cascade' en la migración Lo dejo abierto porque creo que debiese poderse hacer desde el modelo.
recuerden que con sequelize estamos manejando dos cosas:
"on delete cascade" es una característica de las tablas de la BD, no del modelo. Por lo que si quieren que al borrar una tupla de una tabla, se borre también la tupla que corresponde a una foreign key, eso tiene que ser especificado a nivel de la estructura de la BD y, por tanto, en migraciones.
Esto es parecido a lo que tuvimos que hacer para tener un email "único" en la tabla de user de wican. Eso se logra mediante un índice de tipo "unique", lo que implica que es parte de la estructura de la BD y, por tanto, también de migraciones.
La razón por la que a nivel del modelo igual hay soporte para especificar algunas cosas que son parte de la estructura de la BD es porque sequelize, además de trabajar con migraciones, soporta un modo de "sincronización", en que sólo con la información que provean en los modelos, hará lo posible por hacer que la BD corresponda a los modelos definidos. Así, si en el modelo especifican onDelete cascade, entonces al activar esa sincronización la tabla se actualizaría para que tenga ese soporte (así que, en cualquier caso, igual es soporte que viene de la base de datos, no del modelo JS). Sin embargo, el template no habilita esa forma de trabajar con sequelize; sólo habilita las migraciones. La razón es porque el sync es limitado: no todo se puede reconfigurar "automágicamente" en la BD. Y cuando llegan a esas limitaciones, igual necesitan algo del tipo "migraciones". Además, con migraciones es posible controlar los cambios de manera de hacer cambios sin pérdida de datos, pues ustedes deciden cómo hacerlo (ejemplo: uno puede crear una migración para crear una tabla nueva, mover datos de una tabla vieja con cierta transformación de datos, y luego borrar la tabla vieja, sin haber perdido datos).
TL DR: Lo que es de la migración en la migración y la culpa es del template jaja Gracias!
Estoy tratando de eliminar una instancia de gift, que está asociada con category mediante la tabla giftCategories. Me tira el siguiente error.
Lo he intentado con y sin la linea onDelete: 'CASCADE'. Hay varios threads sin resolver sobre lo mismo (solo en relaciones belongsToMany)