如何使用 sequelize / mysql 删除特定实例的关系
how to remove relation for specific instances with sequelize / mysql
我在课程和用户之间创建了这样的多对多关联:
Course.belongsToMany(User, { through: 'CourseUser'});
User.belongsToMany(Course, { through: 'CourseUser'});
这会生成一个名为 CourseUser 的连接 table。
我为特定课程和用户添加了一个关系,该关系具有以下服务器端功能,该功能在单击按钮时发生:
userCourse 变量如下所示:{ UserId: 7, CourseId: 13 }
addUser: function(req, res) {
var userCourse = req.body;
db.CourseUser.create(userCourse).then(function () {
res.sendStatus(200);
});
}
这是在现有用户和现有课程之间添加关联的正确方法吗? (如果不是,正确的做法是什么)
我希望能够在单击另一个按钮时删除关联。但是我不太明白如何设置这个功能。
- 如果您已经有一个
User
和 Course
实例并且只是在 addUser
中关联它们,那么是的,这是在它们之间创建关联的正确方法。
- 您应该能够通过至少 4 种方式删除此关联:
1:通过User
型号:
User.removeCourse(courseObject);
2:通过Course
型号:
Course.removeUser(userObject);
3:在 CourseUser
模型上,没有可用的 CourseUser
实例:
db.CourseUser.destroy({
where: {...}
});
4:有一个 CourseUser
实例可用:
courseUser.destroy();
您可以在所有这些操作上绑定 .then
和 .catch
,以便在成功/出错时执行某些操作。
你的模特关系还好:
Course.belongsToMany(User, { through: 'CourseUser'}); User.belongsToMany(Course, { through: 'CourseUser'});
和值:
{ UserId: 7, CourseId: 13 }
实现可以这样寻找添加 UserCourse 关系:
addUser: function(req, res) {
const { UserId, CourseId } = req.body;
db.Course.findOne({
where: { id: CourseId }
}).then(course => {
course.setUsers([UserId])
res.sendStatus(200);
}).catch(e => console.log(e));
}
虽然这可以处理用户分离:
removeUser: function (req, res) {
const { UserId, CourseId } = req.body;
db.Course.findOne({
where: { id: CourseId }
}).then(course => {
course.removeUsers([UserId])
res.sendStatus(200);
}).catch(e => console.log(e));
}
我希望这会有所帮助
我在课程和用户之间创建了这样的多对多关联:
Course.belongsToMany(User, { through: 'CourseUser'});
User.belongsToMany(Course, { through: 'CourseUser'});
这会生成一个名为 CourseUser 的连接 table。
我为特定课程和用户添加了一个关系,该关系具有以下服务器端功能,该功能在单击按钮时发生: userCourse 变量如下所示:{ UserId: 7, CourseId: 13 }
addUser: function(req, res) {
var userCourse = req.body;
db.CourseUser.create(userCourse).then(function () {
res.sendStatus(200);
});
}
这是在现有用户和现有课程之间添加关联的正确方法吗? (如果不是,正确的做法是什么)
我希望能够在单击另一个按钮时删除关联。但是我不太明白如何设置这个功能。
- 如果您已经有一个
User
和Course
实例并且只是在addUser
中关联它们,那么是的,这是在它们之间创建关联的正确方法。 - 您应该能够通过至少 4 种方式删除此关联:
1:通过User
型号:
User.removeCourse(courseObject);
2:通过Course
型号:
Course.removeUser(userObject);
3:在 CourseUser
模型上,没有可用的 CourseUser
实例:
db.CourseUser.destroy({
where: {...}
});
4:有一个 CourseUser
实例可用:
courseUser.destroy();
您可以在所有这些操作上绑定 .then
和 .catch
,以便在成功/出错时执行某些操作。
你的模特关系还好:
Course.belongsToMany(User, { through: 'CourseUser'}); User.belongsToMany(Course, { through: 'CourseUser'});
和值:
{ UserId: 7, CourseId: 13 }
实现可以这样寻找添加 UserCourse 关系:
addUser: function(req, res) {
const { UserId, CourseId } = req.body;
db.Course.findOne({
where: { id: CourseId }
}).then(course => {
course.setUsers([UserId])
res.sendStatus(200);
}).catch(e => console.log(e));
}
虽然这可以处理用户分离:
removeUser: function (req, res) {
const { UserId, CourseId } = req.body;
db.Course.findOne({
where: { id: CourseId }
}).then(course => {
course.removeUsers([UserId])
res.sendStatus(200);
}).catch(e => console.log(e));
}
我希望这会有所帮助