I use sequelize-cli for migrations:
My migration code:
module.exports = {
up(queryInterface, Sequelize) {
queryInterface.showAllSchemas({
options: {},
}).then((data) => {
data.forEach(schema => queryInterface.addColumn({
tableName: 'visitors',
schema, // dynamic schemas coming from loop
}, 'purposeId', {
type: Sequelize.INTEGER,
references: {
model: 'purposes', // name of Target model
key: 'id', // key in Target model that we're referencing
},
}));
});
},
};
I have multiple schemas, inside that i have table called 'visitors', in that table i want to add column called 'purposeId' references from 'purposes' table.
Migrations successfully done, also i got a purposeId column inside my 'visitors' table.
But if i do crud operations inside 'visitors' table i am getting this error:
Unhandled rejection SequelizeForeignKeyConstraintError: insert or update on table "visitors" violates foreign key constraint "visitors_purposeId_fkey"
NOTE: I am using postgres.
Actually i solved this using constraints:false.
I removed that references from my migration.
My Migration code:
module.exports = {
up(queryInterface, Sequelize) {
queryInterface.showAllSchemas({
options: {},
}).then((data) => {
data.forEach(schema => queryInterface.addColumn({
tableName: 'visitors',
schema,
}, 'purposeId', {
type: Sequelize.INTEGER,
}));
});
},
down(queryInterface, Sequelize) {
queryInterface.showAllSchemas({
options: {},
}).then((data) => {
data.forEach(schema => queryInterface.removeColumn({
tableName: 'visitors',
schema,
}, 'purposeId', {
type: Sequelize.INTEGER,
}));
});
},
};
And in my Sequelize model:
Visitor.belongsTo(Purpose, { constraints: false });