2016-11-20 1 views
3

Ich habe die folgende Struktur:Sequelize Many-to-many-Tabelle mit identischen Fremdschlüssel überschreibt den Wert

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 }); 

Der gleiche Benutzer sollte in der Lage zu Multiples Kommentare zum gleichen Beitrag. Aber wenn ich

post.addPostUserComment(currentUserId, {comment: "teste"}) 

ausführen Wenn ich bereits einen Kommentar zu diesem Beitrag gemacht von Current habe, sie außer Kraft setzen, es ist „Kommentar“ Wert in der Datenbank, wenn es sollte eine neue Zeile erstellen.

Dialect: mysql Sequelize Version: ~ 3.24.2

Mache ich etwas falsch?

Antwort

2

belongsToMany bedeutet Viele-zu-viele-Beziehung, es stellt sicher, dass ein Post mit nur einem einzigen Datensatz in PostComment verbunden wird. Es verletzt nicht das Viele-zu-Viele-Beziehungsprinzip, da Post auch über eine andere Zeile in PostComment mit einem anderen Benutzer in Beziehung stehen kann. Also in Ihrem Fall, wenn der Benutzer in der Lage, mehrere Kommentare zu einem Beitrag hinzufügen sollten Sie folgende Zuordnungen definieren:

Post.hasMany(PostComment);

User.hasMany(PostComment);

und das Hinzufügen von Kommentaren wird wie folgt aussehen:

post.addPostComment({userId: currentUserId, comment: 'test'}) 
+0

Ich muss aufgeben und tun es auf Ihre Weise, ich konnte neue Instanzen erstellen, aber ich konnte nicht alle auswählen. Deine Lösung hat für mich funktioniert. Danke –

0

Ich am Ende mache

Post.belongsToMany(User, {as: 'postUserComment', through: {model: models.PostComment, unique: false}, foreignKey: 'idPost'}); 

User.belongsToMany(Post, {through: {model: models.PostComment, unique: false}, foreignKey: 'idUserComment'}); 

Ich kann jetzt mehrere Kommentare erstellen. Ich habe ein wenig Schwierigkeiten, sie alle auszuwählen, aber es ist etwas zu einem anderen Problem, das ich glaube.

+0

Ich musste es tun @ Tilov-Yrys Weg, weil ich neue Instanzen erstellen konnte, aber nicht sie auswählen –

Verwandte Themen