在 sequelize 返回值中删除连接表数据

Posted

技术标签:

【中文标题】在 sequelize 返回值中删除连接表数据【英文标题】:Removing join table data in sequelize returned value 【发布时间】:2020-06-23 08:55:41 【问题描述】:

我目前正在尝试删除在检索关联数据时添加的joint 表数据。

查询是通过指定模型关系(sequelize magic methods)添加到模型的方法通过sequelize完成的,由于某种原因,我无法做到。

我目前尝试将attributes: exclude: ['...'] 传递给该方法,但该字段仍然存在。

当前关联

// Class sequelize model

Class.belongsToMany(models.Subject,  
  through: 'ClassSubject', 
  foreignKey: 'class_id', 
  otherKey: 'subject_id', 
  as: 'subjects' 
)


// Subject sequelize model

Subject.belongsToMany(models.Class,  
  through: 'ClassSubject', 
  foreignKey: 'subject_id', 
  otherKey: 'class_id',
  as: 'classes' 
);

查询和响应

const subjects = await dbClass.getSubjects(); // dbClass is a Class model instance

// Response
[
  
    "id": "1b89d44c-2caa-452d-a1f8-7faa11970917",
    "name": "Mathematics",
    "code": "MATHS",
    "summary": "Mathematics for class 1",
    "ClassSubject": 
      "class_id": "637afc7b-40f6-478e-b35e-859ca462e2e7",
      "subject_id": "1b89d44c-2caa-452d-a1f8-7faa11970917"
    
  
]

期望的输出

// Response
[
  
    "id": "1b89d44c-2caa-452d-a1f8-7faa11970917",
    "name": "Mathematics",
    "code": "MATHS",
    "summary": "Mathematics for class 1"
  
]

我已尝试将选项传递给下面指定的方法,但无济于事

const subjects = await dbClass.getSubjects( 
    attributes:  exclude: ['ClassSubject']  
);

但还是不行。

【问题讨论】:

【参考方案1】:

尝试使用joinTableAttributes 选项并传递空数组以排除联合表中的所有内容。

const subjects = await dbClass.getSubjects( joinTableAttributes: [] ); 

【讨论】:

好的,我会试试的。

以上是关于在 sequelize 返回值中删除连接表数据的主要内容,如果未能解决你的问题,请参考以下文章

用sql se3ver连上数据库后如何断开连接,我一删除连接就直接删掉整个数据库啊T T

SE16N 添加修改删除表数据权限

用sql语句进行多表连接查询出现重复数据

Linux下mysql如何关联多张数据表

尝试从数组中的值中删除基于 MKMap 的引脚

从datagridview值中删除数据库中的行