我正在使用Sequilize在NodeJS中编写一个常见的学生-课程关系数据库。这两个模型是通过自动生成的关系表
为了更新与学生关联的课程,我通常会删除关联表中所有条目
由于条件
但是,我如何删除与一个学生相关联的所有条目呢?我应该查询所有课程并用它们的 id 填充一个数组吗?
如果需要,可以提供一些示例代码。
谢谢!
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 填充一个数组吗?
如果需要,可以提供一些示例代码。
谢谢!