gpt4 book ai didi

javascript - Sequelize插入多对多连接表

转载 作者:行者123 更新时间:2023-12-03 22:26:42 25 4
gpt4 key购买 nike

我在 sequelize 中设置了两个具有多对多关系的模型。 Sequelize 正确创建了连接表,但我无法插入其中。我一直在研究文档的这一部分:http://docs.sequelizejs.com/en/latest/docs/associations/#creating-with-associations,但根据他们的示例,我无法获得任何工作。不幸的是,他们没有多对多的例子。
模型关系:

db.user.hasMany(db.post, {through: "likes"});
db.post.belongsTo(db.user, {through: "likes"});
Post.findById(postId).then( (post) => {
try{
Post.setLikes({userId: 1, postId: 1});
}catch(e){
console.error(e);
}
});

最佳答案

对于多对多关系,您必须使用 belongsToMany 而不是 hasMany
在你的情况下:

db.user.belongsToMany(db.post, {through: "likes"});
db.post.belongsToMany(db.user, {through: "likes"});

您可以使用 3 种方法来管理这种关系 addremoveset addremove 添加或删除 id(s) 传入参数, set 将关系中的所有 id 替换为 id(s) 传入参数(set 是删除所有 + 添加 id 传入参数)

举个例子:
const postId = 1

Post.findById(postId).then( async(post) => {
try{
await Post.addLikes([1,2,3]); // 3 relationship are in db postId: 1 with userId: 1,2,3
await Post.removeLikes(1); // 2 relationship are in db postId: 1 with userId: 2,3
await Post.setLikes(1); // unique relationship is in db postId: 1 with userId:1
}catch(e){
console.error(e);
}
});

你可以在这里获得更多信息 https://sequelize.org/master/class/lib/associations/has-many.js~HasMany.html#instance-method-add

关于javascript - Sequelize插入多对多连接表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57641058/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com