0

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.

Mohamed Sameer
  • 2,998
  • 3
  • 22
  • 51

1 Answers1

2

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 });
Mohamed Sameer
  • 2,998
  • 3
  • 22
  • 51