I don't understand this error (SequelizeForeignKeyConstraintError: insert or update on table \"segment\" violates foreign key constraint \"segment_id_fkey\"). I've read other answers on this topic on StackOverflow, but nothing that has pointed me in the right direction.
What I'm trying to do is have a user submit a form with some data that's then saved as a Segment model. The Segment model looks like so:
module.exports = (sequelize, DataTypes) => {
const Segment = sequelize.define(
'segment',
{
id: {
type: DataTypes.INTEGER,
autoIncrement: true,
primaryKey: true
},
provider_id: {
type: DataTypes.INTEGER,
references: {
model: 'provider',
key: 'id'
}
},
summary_id: {
type: DataTypes.INTEGER,
references: {
model: 'summary',
key: 'id'
}
},
audience_id: {
type: DataTypes.INTEGER,
references: {
model: 'audience',
key: 'id'
}
},
onboarding_id: {
type: DataTypes.INTEGER,
references: {
model: 'onboarding',
key: 'id'
}
}
},
{
// disable the modification of table names; By default, sequelize will automatically
// transform all passed model names (first parameter of define) into plural.
// if you don't want that, set the following
freezeTableName: true,
tableName: 'segment'
}
);
Segment.associate = models => {
Segment.belongsTo(models.Provider, { foreignKey: 'id' });
Segment.belongsTo(models.Summary, { foreignKey: 'id' });
Segment.belongsTo(models.Audience, { foreignKey: 'id' });
Segment.belongsTo(models.Onboarding, { foreignKey: 'id' });
};
return Segment;
};
The models that the Segment refers to (ie Provider, Summary, Audience, Onboarding), have a hasMany relationship to the Segment model. Something like so:
Provider.associate = models => {
Provider.hasMany(models.Segment, { foreignKey: 'provider_id' });
};
I have a feeling that the error has to do with the way I'm associating my models.
Any and all help is super appreciated! Thanks in advance!
Keep associations like:
Segment.associate = models => {
Segment.belongsTo(models.Provider, { foreignKey: 'provider_id' });
Segment.belongsTo(models.Summary, { foreignKey: 'summary_id' });
Segment.belongsTo(models.Audience, { foreignKey: 'audience_id' });
Segment.belongsTo(models.Onboarding, { foreignKey: 'onboarding_id' });
}
and in Providers, summary, Audience and oboarding files:
Providers.associate = models => {
Providers.belongsTo(models.Segments, { foreignKey: 'id' });
};
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With