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

发布于 2022-09-05 14:48:17 字数 1133 浏览 21 评论 0

关联表查询代码如下:

 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,没效果,求教各位了,谢谢

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(7

九命猫 2022-09-12 14:48:17

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

深海少女心 2022-09-12 14:48:17

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

少女情怀诗 2022-09-12 14:48:17

这样写就行了
`
include: [{

    through: { attributes: [] }, // 排除中间表
    model: db.Label,
    attributes: ['name', 'id']
  }
],`
半步萧音过轻尘 2022-09-12 14:48:17

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

红玫瑰 2022-09-12 14:48:17

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

囍笑 2022-09-12 14:48:17

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

七秒鱼° 2022-09-12 14:48:17

model.toJSON()里delete 对应字段?

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文