Mysql 使用相同的外键对多对多表进行续集将覆盖该值
我的结构如下:Mysql 使用相同的外键对多对多表进行续集将覆盖该值,mysql,node.js,sequelize.js,Mysql,Node.js,Sequelize.js,我的结构如下: var User = sequelize.define('user', { name: DataTypes.STRING }); var Post = sequelize.define('post', { text: DataTypes.STRING }); var PostComment = sequelize.define('postComment', { id: { type: DataTypes.BIGINT, primaryKey: tr
var User = sequelize.define('user', {
name: DataTypes.STRING
});
var Post = sequelize.define('post', {
text: DataTypes.STRING
});
var PostComment = sequelize.define('postComment', {
id: {
type: DataTypes.BIGINT,
primaryKey: true,
autoIncrement: true
},
comment: DataTypes.TEXT
});
Post.belongsToMany(User, { as: 'postUserComment', through: PostComment });
User.belongsToMany(Post, { through: PostComment });
同一个用户应该能够对同一篇文章发表多条评论。
但当我执行
post.addPostUserComment(currentUserId, {comment: "teste"})
如果我已经有了currentUser对这篇文章的评论,它会在创建新行时覆盖数据库中的“comment”值
方言:mysql
续集版本:~3.24.2
我做错什么了吗?
belongtomany
意味着多对多关系,它确保一个帖子只通过PostComment中的一行与一个用户连接。这并不违反多对多关系原则,因为post也可以通过post命令中的另一行与其他用户建立关系。因此,在您的情况下,当用户能够向一篇帖子添加多条评论时,您应该定义以下关联:
Post.hasMany(PostComment)代码>
User.hasMany(后命令)代码>
添加注释将如下所示:
post.addPostComment({userId: currentUserId, comment: 'test'})
我最后做了什么
Post.belongsToMany(User, {as: 'postUserComment', through: {model: models.PostComment, unique: false}, foreignKey: 'idPost'});
User.belongsToMany(Post, {through: {model: models.PostComment, unique: false}, foreignKey: 'idUserComment'});
我现在可以创建多个评论。
我在选择所有实例时有点困难,但我相信这是另一个问题。我不得不放弃,按照你的方式去做,我能够创建新实例,但我无法选择所有实例。你的解决方案对我有效。ThanksI必须通过@tilov yrys的方式来完成,因为我能够创建新实例,但不能选择它们