Sequelize.js foreign key

swampcypress picture swampcypress · Jan 5, 2013 · Viewed 65.6k times · Source

When using Sequelize.js, the following code doesn't add any foreign key on tables.

var MainDashboard = sequelize.define('main_dashboard', {
  title: Sequelize.STRING
}, {
  freezeTableName: true
})

MainClient.hasOne(MainDashboard, { foreignKey: 'idClient' })
MainDashboard.hasOne(MainClient, { foreignKey: 'clientId' })

sequelize.sync({ force: true })

Is there any way to force Sequelize.js to add these foreign key constraints?

Answer

Ilsondotcom picture Ilsondotcom · Apr 12, 2014

Before I had the same problem, and solved when I understood the functioning of settings Sequelize.

Straight to the point!

Suppose we have two objects: Person and Father

var Person = sequelize.define('Person', {

        name: Sequelize.STRING
});

var Father = sequelize.define('Father', {

        age: Sequelize.STRING,
        //The magic start here
        personId: {
              type: Sequelize.INTEGER,
              references: 'persons', // <<< Note, its table's name, not object name
              referencesKey: 'id' // <<< Note, its a column name
        }
});

Person.hasMany(Father); // Set one to many relationship

Maybe it helps you

Edit:

You can read this to understand better:

http://docs.sequelizejs.com/manual/tutorial/associations.html#foreign-keys