创建包括外键在内的复合唯一键

时间:2019-05-24 11:41:03

标签: node.js sequelize.js

我有两个表"Users""Applications",以便一个用户拥有多个应用程序。 现在,我要添加一个约束条件,即每个用户可以有多个但唯一的应用程序名称。

我尝试过unique: 'compositeIndex',但它仅适用于列,不适用于'userId'表中的'application'之类的外键列。

const createApplications = (sequelize, DataTypes) => {
    const applications = sequelize.define('applications', {
        name: {
            type: DataTypes.STRING,
            allowNull: false,
            unique: 'compositeIndex'
        }
    });

    applications.associate = models => {
        applications.belongsTo(models.users, {
            delete: 'CASCADE',
            foreignKey: 'user_id',
            unique: 'compositeIndex'
        });
    }
    return applications;
};


const createUsers = (sequelize, DataTypes) => {
    const users = sequelize.define('users', {
        eid: {
            type: DataTypes.STRING,
            allowNull: false
        },
        password: {
            type: DataTypes.STRING,
            allowNull: false
        }
    })
    return users;
};

1 个答案:

答案 0 :(得分:0)

您的问题有点令人困惑。似乎您想要从'User''Application'表的一对多映射。如果是这样,请看一下: one to many association in sequelize

请编辑预期结果的答案,以清除所需内容或添加表格结构屏幕截图。