Egg-sequelize学习笔记

模型关联

1.定义模型

user表:

      id: { type: INTEGER, primaryKey: true, autoIncrement: true },
      username: STRING(32),
      password: STRING(32),
      status: INTEGER, // 启用状态 1为启用 0为关闭
      userimg: STRING(200),
      created_at: DATE,
      updated_at: DATE,

auth_group表(记录用户权限表):

      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, // 对应auth_groupID
      created_at: DATE,
      updated_at: DATE,

auth_rule表(权限表):

      id: { type: INTEGER, primaryKey: true, autoIncrement: true },
      route: STRING(200), // 路由地址
      name: STRING(200), // 接口名称
      status: INTEGER, // 启用状态 1为开启 0为关闭
      created_at: DATE,
      updated_at: DATE,
      ismenu: INTEGER, // 是否是菜单 0 不是菜单 1 是菜单
      prent_id: INTEGER, // 菜单父级ID
      icon: STRING(200), // 菜单图标
      show: INTEGER, // 菜单是否展示 1为展示0为隐藏
      sort: INTEGER, // 菜单排序

2.一对一关系

// 在USER模型中编写
Model.associate = function() {
    app.model.User.hasOne(app.model.AuthGroupAccess, { foreignKey: 'uid'});
    // foreignKey的值为AuthGroupAccess表中的外键(对应user表里ID的字段)
  }
// controller调用 
const result = await app.model.User.findAll({
  include: {
    model: app.model.AuthGroupAccess,
      // include: { // 如果还有关联就内嵌
      //    model: app.model.xxx,
      // }
  },
});

以上写法可以通过user找到AuthGroupAccess表里的数据,如果由AuthGroupAccess表来找user表的数据应该这么写:

3.多对多关系

有中间表的实现:

user表的ID对应auth_group_access表中的uid

auth_group表中的id对应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(中间表)对应的字段         名,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(中间表)对应    的字段名,through为中间表的模型
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容