Uri Abramson
Uri Abramson

Reputation: 6175

Sequelize associations not creating foreign keys

I have 2 models (on separate files:

user.js

module.exports = (sequelize, DataTypes) => {
    let user = sequelize.define('user', {
        user_id: DataTypes.INTEGER,
        first_name: DataTypes.STRING,
        last_name: DataTypes.STRING,
        email: DataTypes.STRING,
        password: DataTypes.STRING,
        phone: DataTypes.STRING,
        is_phone_verified: DataTypes.BOOLEAN,
    }, {
        underscored: true,
        classMethods: {
            associate(models) {
                user.hasOne(models.userBankAccount);
            },
        },
    });
    return user;
};

user_bank_account.js

module.exports = (sequelize, DataTypes) => {
    const userBankAccount = sequelize.define('user_bank_account', {
        user_bank_account_id: DataTypes.INTEGER,
        user_id: DataTypes.INTEGER,
        item_id: DataTypes.STRING,
        access_token: DataTypes.STRING,
        checking_account_id: DataTypes.STRING,
    }, {
        underscored: true,
        classMethods: {
            associate(models) {
                userBankAccount.belongsTo(models.user);
            },
        },
    });
    return userBankAccount;
};

When I run sequelize db:migrate, no foreign keys are created in the Postgres DB.

I use sequelize v4.

Any ideas?

Upvotes: 1

Views: 408

Answers (1)

Elo Okonkwo
Elo Okonkwo

Reputation: 21

The classMethods attribute doesn't work for v4 of Sequelize. You should call the associate method directly. For example:

userBankAccount.associate = function(models) {}
user.associate = function(models) {}

Upvotes: 2

Related Questions