模型關(guān)聯(lián)
1.定義模型
user表:
id: { type: INTEGER, primaryKey: true, autoIncrement: true },
username: STRING(32),
password: STRING(32),
status: INTEGER, // 啟用狀態(tài) 1為啟用 0為關(guān)閉
userimg: STRING(200),
created_at: DATE,
updated_at: DATE,
auth_group表(記錄用戶權(quán)限表):
id: { type: INTEGER, primaryKey: true, autoIncrement: true },
title: STRING(50), // 用戶title
rules: STRING(500),
status: INTEGER, // 是否啟用 0 禁用 1 啟用
created_at: DATE,
updated_at: DATE,
auth_group_access表(中間表,連接auth_group與user表):
uid: INTEGER, // user表ID
group_id: INTEGER, // 對(duì)應(yīng)auth_groupID
created_at: DATE,
updated_at: DATE,
auth_rule表(權(quán)限表):
id: { type: INTEGER, primaryKey: true, autoIncrement: true },
route: STRING(200), // 路由地址
name: STRING(200), // 接口名稱
status: INTEGER, // 啟用狀態(tài) 1為開(kāi)啟 0為關(guān)閉
created_at: DATE,
updated_at: DATE,
ismenu: INTEGER, // 是否是菜單 0 不是菜單 1 是菜單
prent_id: INTEGER, // 菜單父級(jí)ID
icon: STRING(200), // 菜單圖標(biāo)
show: INTEGER, // 菜單是否展示 1為展示0為隱藏
sort: INTEGER, // 菜單排序
2.一對(duì)一關(guān)系
// 在USER模型中編寫
Model.associate = function() {
app.model.User.hasOne(app.model.AuthGroupAccess, { foreignKey: 'uid'});
// foreignKey的值為AuthGroupAccess表中的外鍵(對(duì)應(yīng)user表里ID的字段)
}
// controller調(diào)用
const result = await app.model.User.findAll({
include: {
model: app.model.AuthGroupAccess,
// include: { // 如果還有關(guān)聯(lián)就內(nèi)嵌
// model: app.model.xxx,
// }
},
});
以上寫法可以通過(guò)user找到AuthGroupAccess表里的數(shù)據(jù)遥倦,如果由AuthGroupAccess表來(lái)找user表的數(shù)據(jù)應(yīng)該這么寫:
3.多對(duì)多關(guān)系
有中間表的實(shí)現(xiàn):
user表的ID對(duì)應(yīng)auth_group_access表中的uid
auth_group表中的id對(duì)應(yīng)auth_group_access表中的group_id
// User 模型中
Model.associate = function() {
app.model.User.belongsToMany(app.model.AuthGroup, { through: app.model.AuthGroupAccess, foreignKey: 'uid' }); // foreignKey的值為:User表的ID與auth_group_access(中間表)對(duì)應(yīng)的字段 名,through為中間表的模型
}
// AuthGroup 模型中
Model.associate = function() {
app.model.AuthGroup.belongsToMany(app.model.User, { through: app.model.AuthGroupAccess, foreignKey: 'group_id' }); // foreignKey的值為:AuthGroup表的ID與auth_group_access(中間表)對(duì)應(yīng) 的字段名,through為中間表的模型
}