将外键作为复合主键encryption

可以将两个外键定义为模型的复合主键?

用户只能是一个家庭的成员,一个家庭可以有很多成员,家庭成员表需要用户和家庭的参考

const User = sequelize.define( 'User', { id: { type: dataTypes.INTEGER.UNSIGNED, autoIncrement: true, primaryKey: true }, name: { type: dataTypes.STRING(30) }, email: { type: dataTypes.STRING(30) } ... }, { classMethods: { associate(models) { User.hasOne(models.FamilyMember, { foreignKey: 'user_id' } } } } ) const Family = sequelize.define( 'Family', { name: { type: dataTypes.STRING(30) } }, { classMethods: { associate(models) { Family.hasMany(models.FamilyMember, { foreignKey: 'family_id' } } } } ) const FamilyMember = sequelize.define( 'FamilyMember', { name: { type: dataTypes.STRING(30) }, /* family_id and user_id will be here after associations but I wanted them to be a composite primaryKey */ } ) 

事实上,我几乎从文档中得到了解决scheme:

 User = sequelize.define('user', {}); Project = sequelize.define('project', {}); UserProjects = sequelize.define('userProjects', { status: DataTypes.STRING }); User.belongsToMany(Project, { through: UserProjects }); Project.belongsToMany(User, { through: UserProjects }); 

默认情况下,上面的代码将projectId和userId添加到UserProjects表中,并删除任何先前定义的主键属性 – 该表将由这两个表的键的组合唯一标识,并且没有理由具有其他PK列。

资源