Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

315
Views
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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!