sequelize 关联表查询 多对多关系,怎么去掉关联中间表字段

关联表查询代码如下:

 const data = await Task.findAll({
      include: [{
        model: dept,
        as: 'department',
        attributes: [
          ['id', 'departmentID'],
          ['department_name', 'departmentName']
        ]
      }]
  })

结果如下

 "department": [
                {
                    "departmentID": 1,
                    "departmentName": "部门1",
                    "dptrule": {
                        "dptID": 1,
                        "ruleID": 1
                    }
                },
                {
                    "departmentID": 2,
                    "departmentName": "部门2",
                    "dptrule": {
                        "dptID": 2,
                        "ruleID": 1
                    }
                }
             ]

dptrule 是department表和rule表的关联表

 models.rules.belongsToMany(models.dept, {
          as: 'department',
          through: models.dptrule,
          foreignKey: 'ruleID',
          constraints: false
        })

怎么可以查询结果去掉dptrule, 用attributes.exclude,没效果,求教各位了,谢谢

阅读 10.7k
7 个回答

使用through 可以解决这个问题,链接

你好, 请问有解决方案了吗? 我也遇到了这个问题不知道怎么解决

新手上路,请多包涵

这样写就行了
`
include: [{

    through: { attributes: [] }, // 排除中间表
    model: db.Label,
    attributes: ['name', 'id']
  }
],`
新手上路,请多包涵

关联表添加through: { attributes: [] }可解决问题

楼主 解决了吗?如果解决了分享一下方法吧

新手上路,请多包涵

使用findAll的话可以通过through: {attributes:[]}来排除中间表的中间字段,使用mixins形式的方法可以使用joinTableAttributes:[]来排除, 如 M.getNs({joinTableAttributes:[]})

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
宣传栏