我希望有人可以帮我正确设置Sequelize中的关系。我相信我已经正确设置了模型,但我不确定,因为我之前从未使用过api,文档很混乱。我附上了一张我认为表格应该是什么样子的图片,下面是我认为应该发生的一些代码片段,但我无法说明。
关于我的数据库设计是否准确的任何指示,以及我的续集关联(hasMany,belongsTo等)是否正确将是非常有用的!
用户模型
'use strict';
module.exports = function(sequelize, DataTypes) {
//Define the user table, and its columns, data types, attributes
var User = sequelize.define('User', {
user_id: {...},
user_name: {...}
},
{
//Define the constraints, such as foreign key
classMethods:{
associate: function(models) {
User.belongsToMany(models.Group);
User.hasMany(models.Old_Password);
}
}
});
return User;
};
角色模型
'use strict';
module.exports = function(sequelize, DataTypes){
var Role = sequelize.define('Role',{
role_id: {...},
role_name:{...}
},
{
//Define the constraints, such as foreign key
classMethods:{
associate: function(models){
Role.belongsTo(models.User);
}
}
});
return Role;
};
群组模型
'use strict';
module.exports = function(sequelize, DataTypes){
var Group = sequelize.define('group', {
group_id: {...},
group_name: {...},
});
return Group;
};
密码模型
'use strict';
module.exports = function(sequelize, DataTypes){
//Define the table, and its columns, data types, attributes
var Old_Password = sequelize.define('Old_Password', {
old_password_id: {...},
old_password_value: {...}
},
{
//Define the constraints, such as foreign key
classMethods:{
associate: function(models){
Old_Password.hasOne(models.User);
}
}
});
return Old_Password;
};
答案 0 :(得分:0)
数据库设计准确。但是,您需要定义User
和Group
之间的关系。这是一个多对多关系,因此您需要为User
模型添加另一个约束:
classMethods:{
associate: function(models){
User.belongsToMany(models.Group, {
// Define the join table
through: 'user_group',
// Define the foreign key
foreignKey: 'group_id'
});
models.Group.belongsToMany(User, {
through: 'user_group',
foreignKey: 'user_id'
});
User.hasMany(models.Old_Password);
}
}