Sequelize 更新belongsToMany 关系

问题描述 投票:0回答:1

如何在sequelize中更新belongsToMany关系。

我想删除“通过”表中的关系,但我不知道我的做法是否正确

const [row, [dataRow]] = await Event.update(payload, { where: { id }, returning: true })
await EventsPets.destroy({ where: { EventId: dataRow.id } })
await dataRow.addPets(PetIds)`

我基本上删除它们,然后再次创建它们......

我希望更新能够更新关系,而不必删除它们然后再次创建它们

sequelize.js
1个回答
0
投票

我知道有点晚了,但我一直需要做同样的事情,我将离开这里我是如何解决它的。

您要做的就是在更新之前(或之后),使用您想要修改的表的更新方法,添加此内容(我将使用 Post 和 Tag 表,因为您没有指定您要修改的表的内容)使用被称为)。

// If you want to update a tag inside post:
const post = await Post.findByPk(req.body.id);
if (post .id !== req.body.tagId) { // Check that it is not the same
     post.setTags(req.body.tagId)
   }

// If you want to update a post from a tag:
const tag = await Tag.findByPk(req.body.id);
tag.setPosts(req.body.tagId)

注意:在执行“set”方法时使用复数非常重要:setPosts、setTags、setEvents 等。我错过了这一点,这就是它不起作用的原因:)

这与我在这里解释的不一样,但我受到此文档页面上的解决方案的指导(https://sequelize.org/docs/v7/associations/belongs-to-many/#association-setter-设置x

© www.soinside.com 2019 - 2024. All rights reserved.