2017-02-13 2 views
2

Ich möchte viele zu viele Association in meiner Knoten-App mit Sequelize hinzufügen. Ich bin neu in Sequelize ORM.Wie viele nocation in bestehenden Modellen in sequelize node.js hinzufügen?

Ich habe ein eixsting-Modell user.js. Ich möchte neue Modell-Projekt erstellen und in den vielen Verein viele wollen

Dafür habe ich laufen sequelize Tabelle erstellen und die Migration erstellt nun in Verbindung Teil, was ich tun, dass viele zu viele Vereinigung erstellt

Ich finde mehrere diese zu tun, dass

Project.belongsToMany(User, {through: 'UserProject'}); 

aber wo ich schreibe User.belongsToMany(Project, {through: 'UserProject'}); weil Benutzermodell alreaady bestehenden

Zweite, was ich will wissen, entwederist 0 automatisch von diesem erstellt oder muss manuell erstellt werden?

Antwort

2

Es ist eine gute Übung, sequelize-cli zu verwenden und das Tool sequelize init zu verwenden, das eine Datei erstellt, die all Ihre Modelle sammelt und Verknüpfungen zwischen ihnen erstellt. Die Zuordnung erfolgt über die Klassenmethode associate, die in allen Ihren Modellen implementiert sein sollte (mit Zuordnung zu anderen).

Diese Methode könnte wie folgt aussehen (im Falle von User Modell):

classMethods: { 
    associate: function(models){ 
     this.belongsToMany(models.Project, { through: 'UserProject' }); 
    } 
} 

Und Äquivalent im Project Modell:

classMethods: { 
    associate: function(models){ 
     this.belongsToMany(models.User, { through: 'UserProject' }); 
    } 
} 

Wenn Sie wollen keine andere zusätzliche Felder hinzufügen In der Tabelle wird es automatisch mit den Feldern UserId und ProjectId erstellt (wenn Sie die sequelize.sync() Methode verwenden - andernfalls müssen Sie die Tabelle in der Migrationsdatei erstellen). In anderen Fällen, wenn Sie andere Felder hinzufügen möchten, müssten Sie ein solches Modell selbst erstellen.

+0

Ich verstehe Sie beantworten aber Problem ist, dass Benutzermodell bereits erstellt und seine Migrationen ausgeführt werden. Wie füge ich this.belongsToMany hinzu (models.Project, {through: 'UserProject'}); in Benutzerzuordnung –

+1

Hängt davon ab, wie Ihre Modelle erstellt werden (Sie können diesen Teil des Codes in Edit anfügen). In jedem Fall müssen Sie eine neue Migrationsdatei für die Tabelle 'UserProject' erstellen, um die Beziehung in der Datenbank zu erstellen. – piotrbienias

+0

in UserProject keine Zuordnung erforderlich? –

Verwandte Themen