【问题标题】:create Composite unique key including foreign key创建包含外键的复合唯一键
【发布时间】:2019-05-24 20:42:18
【问题描述】:

我有两个表"Users""Applications",这样一个用户就有多个应用程序。 现在,我想添加一个约束,即每个用户可以有多个但唯一的应用程序名称。

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

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;
};

【问题讨论】:

    标签: node.js sequelize.js


    【解决方案1】:

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

    请使用预期结果编辑您的答案以清除您想要的内容或添加表格结构屏幕截图。

    【讨论】:

    • 请求是:如果有3个应用程序A、B和C,以及2个用户user1,user2。然后 user1 ==> [A,B,C] user2 ==> [A,B,C] (可以有这些应用但不像 user1 ==> [A, B, A, C] (应用不应该重复一位用户)
    猜你喜欢
    • 1970-01-01
    • 2021-04-10
    • 1970-01-01
    • 2017-10-06
    • 2018-01-07
    • 1970-01-01
    • 2015-12-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多