let data = require('./../../config/db')
let connection = data.connection
let sequelize = data.sequelize
let sql = function(){
let clubMembers = connection.define('club_members',{
position:{
type :sequelize.ENUM('President','Treasurer') ,
allowNull : false
}
},
{
classMethods : {
associate : function(models){
let clubMembers = models.club_members
let club = models.club
let student = models.student
club.hasMany(clubMembers,{
foreignKey : "club_id"
})
student.hasMany(clubMembers,{
foreignKey : "student_id"
})
}
}
}
);
return clubMembers;
}
module.exports = sql;
我不需要此表中的
id
属性,但 sequelize 会自动创建它。并且两个外键的组合应该被视为主键,即复合主键。最佳答案
您应该在 belongsToMany
函数中使用 associate
associate: function(models){
models.club.belongsToMany(models.student, { through: models.club_members, foreignKey: 'club_id' });
models.student.belongsToMany(models.club, { through: models.club_members, foreignKey: 'student_id' });
}
这将使用由
club_members
和 club_id
组成的复合主键创建 student_id
表,没有默认的 id
列。
关于database - 不需要 Sequelize 自动创建的 id 属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42852130/