Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/38.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 使用相同的外键对多对多表进行续集将覆盖该值_Mysql_Node.js_Sequelize.js - Fatal编程技术网

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的方式来完成,因为我能够创建新实例,但不能选择它们