javascript - 如何使用 sequelize/mysql 删除特定实例的关系

标签 javascript mysql node.js database sequelize.js

我在类(class)和用户之间创建了一个多对多的关联,如下所示:

Course.belongsToMany(User, { through: 'CourseUser'});
User.belongsToMany(Course, { through: 'CourseUser'});

它生成一个名为 CourseUser 的连接表。

我为特定类(class)和用户添加了一个关系,具有以下服务器端功能,点击按钮时发生: userCourse 变量如下所示:{ UserId: 7, CourseId: 13 }

  addUser: function(req, res) {
    var userCourse = req.body;
    db.CourseUser.create(userCourse).then(function () {
      res.sendStatus(200);
    });
  }
  1. 这是在现有用户和现有类(class)之间添加关联的正确方法吗? (如果不是,正确的做法是什么)

  2. 我希望能够在单击另一个按钮时删除关联。但我不太清楚如何设置该功能。

最佳答案

  1. 如果您已经有一个 UserCourse 实例并且只是在 addUser 中关联它们,那么是的,这是正确的方法在它们之间建立关联。
  2. 您应该能够通过至少 4 种方式删除此关联:

1:通过User模型:

User.removeCourse(courseObject);

2:通过类(class)模型:

Course.removeUser(userObject);

3:在 CourseUser 模型上,没有可用的 CourseUser 实例:

db.CourseUser.destroy({
    where: {...}
});

4: 有一个可用的 CourseUser 实例:

courseUser.destroy();

您可以在所有这些操作上绑定(bind) .then.catch 以在成功/出错时执行某些操作。

关于javascript - 如何使用 sequelize/mysql 删除特定实例的关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34831639/

相关文章:

javascript - 文本框所有相乘值的总和

php - Mysql 之间比较一个字段?

javascript - Node.js 包括位于 Web 服务器上的本地 javascript 文件

node.js - 在nodejs中解析jsonld

node.js - Google Cloud Load Balancer 与 Nginx Load Balancer 它们有何不同?

javascript - 多次更改元素的 ID

JavaScript 和 Django, "there is no locally stored liblary for the HTTP"

javascript - 检查 DraftJS 中的 contentState 是否更改或只是 editorState 的最佳性能方法

java - hibernate中现有表和新表之间的一对一映射

php - 实现插入数据库后如何获取查询的多行?