Mon problème est assez simple:SequelizeJS - hasMany à hasMany sur la même table avec une table de jointure
Je suis une table nommée utilisateurs. Ces utilisateurs peuvent avoir beaucoup de contacts. Ces contacts sont d'autres utilisateurs.
J'ai une table nommée userHasContacts, avec l'identifiant du propriétaire (userID) et l'identifiant du contact (contactID).
Ces deux clés étrangères référencent utilisateurs table.
Voici mon beau diagramme:
----------------
______________|____ ____|____
| userHasContacts | | users |
------------------- ---------
| #userID | | id |
| #contactID | ---------
------------------- |
| |
----------------
En sequelize, dans ma logique, j'écrirait:
Users.hasMany(Users, {foreignKey: 'userID', joinTableName: 'userHasContacts'});
Users.hasMany(Users, {as: 'Contacts', foreignKey: 'contactID', joinTableName: 'userHasContacts'});
Mais il semble que cela ne fonctionne pas de cette façon, et il a été 2 heures j'essaye plusieurs manières d'écrire cette relation ...
La seule ligne qui a fonctionné pour moi était
Users.hasMany(UserHasContacts, {foreignKey: 'contactID', joinTableName: 'userHasContacts'});
UserHasContacts.findAndCountAll({ where: {userID: id} }).success(function(result) {
res.json(result);
});
Mais je ne peux pas rejoindre utilisateurs table de ma requête find (via Eager loading) et il retourne simplement les données à l'intérieur userHasContacts.
Si quelqu'un a un indice, vous êtes les bienvenus!
Merci d'avance!