Join table relacion many to many
Closed this issue · 6 comments
Para las relaciones n:m es necesario crear la join table manualmente? O basta con definir las asociaciones en el modelo?
saludos
Nosotros lo hicimos usando BelongsToMany y creamos la tabla manualmente con el modelo y la migración. Sino, puedes crear el modelo y usar sequelize.sync() al final y lo crea solo las tablas, pero cada vez que reinicias el servidor intenta crear la tabla de nuevo.
De todas formas, para saber bien cómo crear la tabla, lo que hice fue dejar que la creara automáticamente con sequelize.sync() primero, y después meterme a la base de datos a ver exactamente qué creó, y hacer una migración a la medida que creara esa misma tabla.
Estos links me fueron útiles:
https://gist.github.com/acanimal/4e9967ff6118054af10b9fededb450a9
Gracias por la respuesta!
Una pregunta, causaba algun tipo de error que el sync() tratara de crear la tabla a pesar de que ya existiera?
No, porque el sync() usa CREATE TABLE IF NOT EXISTS
, entonces cuando ya está la tabla no la vuelve a crear.
En los docs de sequelize también encontrarán cómo espera sequelize que se llamen tablas y claves foráneas. Sequelize sync no soporta todos los cambios que podrían necesitar y además creo que en general hay que tener mucho cuidado con cómo cambia la bd, y suele ser mejor tener esos cambios bajo control.
Gracias profe! Use el sync() pero ahora trataré de hacerlo con una migración.
Por otra parte, creo que la documentación de sequelize deja muchisimo que desear...
Sí … comparado con otros proyectos open source creo que tienen una cantidad respetable de documentación. Pero es un proyecto muy grande así que igual les queda bastante no cubierto. Las migraciones, en particular, están al debe.