Sequelize - 删除多对多关联

3
我正在使用Sequilize在NodeJS中编写一个常见的学生-课程关系数据库。这两个模型是通过自动生成的关系表student_course相关联的。
Course.belongsToMany(Student, {
  through: "student_course",
});

Student.belongsToMany(Course, {
  through: "student_course",
});

为了更新与学生关联的课程,我通常会删除关联表中所有条目where: {studentId: "所选学生的id"},并插入用户发布的新关联。查看文档后,我发现:当两个模型之间定义关联时,这些模型的实例会获得特殊方法以与其关联的对应项进行交互source。在"Foo.belongsToMany(Bar, { through: Baz })"段落下列出的方法之一是fooInstance.removeBars(),我认为这是我需要的完美选择。但是student.removeCourses()会生成以下SQL查询:
DELETE FROM `student_course` WHERE `studentId` = 6 AND `courseId` IN (NULL)

由于条件 courseId IN (NULL),查询无法工作,即没有删除任何内容。如果像 student.removeCourses([1,2,3]) 这样指定 courseId,它就能正常工作。
但是,我如何删除与一个学生相关联的所有条目呢?我应该查询所有课程并用它们的 id 填充一个数组吗?
如果需要,可以提供一些示例代码。
谢谢!

我和你一样有相同的问题。 - DinoStray
请将@DinoStray的答案标记为正确,以帮助更多人了解解决方案。 - Josh Rodríguez
1个回答

2

如果您想删除一个学生所关联的所有课程,请使用student.setCourses([])。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接