2016-10-02 2 views
0

I Sequelize in Knoten bin mit und haben einen Tabellennamen User und Auth:Sequelize: Erstellen zu-viele Beziehungen

User 
    id 
    name 

Auth: 
    id 
    token 

würde Ich mag Beziehungen zu diesem Modell hinzuzufügen.

Ein User kann viele Auth 's, to-many Beziehung mit Auth haben.

Eine Auth kann nur eine User, to-one Beziehung mit User haben.

Ich habe eine Klasseninstanz in meinem Modell-Datei, die ich Beziehungen mit dem folgenden Code erstellen bin mit:

tableName: 'User', 
      classMethods: { 
       associate: function (models) { 
        user.belongsToMany(user, { through: { model: models.auth }, as: `user` }) 
       } 

Dieser Code erzeugt ein Feld in Auth, userId genannt.

Was ich hoffe, ist das bekommen folgende:

User 
    id 
    name 
    auths //an array that will contain all instances of Auth by this User 

Auth: 
    id 
    token 
    user //an object of User to whom this Auth object belongs to 

Was mache ich falsch?

Antwort

1

Geben Sie diesen einen Versuch:

var User = sequelize.define('User', { 
    ... 
    classMethods: { 
     associate: function (models) { 
      User.hasMany(models.Auth, {as: 'auths'}); 
     } 
    } 
}; 


var Auth = sequelize.define('Auth', { 
    ... 
    classMethods: { 
     associate: function (models) { 
      Auth.belongsTo(models.User, {as: 'user'}); 
     } 
    } 
}; 

Das wird eine userId Spalte auf die auth Tabelle hinzuzufügen.

es abzufragen Sie tun würde (man beachte die include in der Abfrage) Sie auch tun können, es umgekehrt:

User.findOne({ 
    include: [Auth] 
}) 

Sie könnten die sequelize docs für one-to-many, hasOne Beziehungen überprüfen möchten und die hasMany, hasOne API für weitere Informationen.

+0

Danke. Wie bekomme ich ein Array aller 'Auth'-Datensätze zurück, die mit einem' User' verknüpft sind? Sollte die 'User'-Tabelle kein Feld namens' Auths' haben? – user1107173

+1

Sie brauchen nur die Referenz in einer Tabelle, nicht beide und in der Abfrage würden Sie sagen, dass es ein zweites Modell enthalten soll. Ich habe auch ein Abfrage-Beispiel zu meinem Beitrag hinzugefügt. – user3254198

Verwandte Themen