如何使用 Sequelize 建立关系
How to establish relationships using Sequelize
我希望有人能帮助我正确设置 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;
};
数据库设计准确。但是,您需要定义 User
和 Group
之间的关系。这是一个 many-to-many 关系,因此您需要向 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);
}
}
我希望有人能帮助我正确设置 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;
};
数据库设计准确。但是,您需要定义 User
和 Group
之间的关系。这是一个 many-to-many 关系,因此您需要向 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);
}
}