美文网首页
Egg-sequelize学习笔记

Egg-sequelize学习笔记

作者: 果子煎饼同学 | 来源:发表于2019-03-06 13:48 被阅读0次

    模型关联

    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为中间表的模型
    }
    

    相关文章

      网友评论

          本文标题:Egg-sequelize学习笔记

          本文链接:https://www.haomeiwen.com/subject/bxmtpqtx.html