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,没效果,求教各位了,谢谢
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(7)
使用through 可以解决这个问题,链接
你好, 请问有解决方案了吗? 我也遇到了这个问题不知道怎么解决
这样写就行了
`
include: [{
关联表添加through: { attributes: [] }可解决问题
楼主 解决了吗?如果解决了分享一下方法吧
使用findAll的话可以通过through: {attributes:[]}来排除中间表的中间字段,使用mixins形式的方法可以使用joinTableAttributes:[]来排除, 如 M.getNs({joinTableAttributes:[]})
model.toJSON()里delete 对应字段?