Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

323
Vistas
Secuela hasOne() / hasMany() y BelongsTo() duplica la clave foregin (crea una nueva y la redefine) y vuelve a anunciarla como clave

He estado tratando de usar Sequelize para administrar una tienda mysql db. Seguí los documentos aquí: https://sequelize.org/master/manual/assocs.html

Y lo hizo (como dijeron)

 const Customer = sequelize.define( "customers", { customer_id: { type: DataTypes.INTEGER, autoIncrement: true, primaryKey: true, }, first_name: { type: DataTypes.STRING, allowNull: false, }, last_name: DataTypes.STRING, }, { tableName: "customers" } ); const Order = sequelize.define( "orders", { order_id: { type: DataTypes.INTEGER, autoIncrement: true, primaryKey: true, }, customer_id: { type: DataTypes.INTEGER, allowNull: false, }, }, { tableName: "orders" } );

y luego anuncie la clave foregin así:

 Customer.hasMany(Order, { foreignKey: 'customer_id' }); Order.belongsTo(Customer);

Y crea una clave foránea duplicada, tanto el ID_cliente que especifiqué como el ID_cliente como predeterminado. Puedo superar esto al desafiar también la opción foreginKey en la pestaña Pertenece a. Pero incluso entonces tengo este comportamiento extraño que cada vez que ejecuto el servidor "agrega" otro, como en la imagen (de heidiSQL).

Ver 17 clave foránea para la misma columna

He intentado eliminar el campo del método define() como sugirió @tam.teixeira

Y reemplazó el código para que sea:

 Customer.hasMany(Order, { foreignKey: "customerID"}); Order.belongsTo(Customer);

Pero aún crea 2 foreginKey de esa manera

 [![enter code here][2]][2]
about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Tienes que eliminar la definición de

 customer_id: { type: DataTypes.INTEGER, allowNull: false, }

del modelo de orders , la secuencia maneja automáticamente ese campo, también dado que NOT NULL , debe agregar esa condición a la asociación:

 Customer.hasMany(Order, { foreignKey: { name: 'customer_id', allowNull: false } });
about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda