sql >> Base de Datos >  >> RDS >> Mysql

SequelizeJS - hasMany a hasMany en la misma tabla con una tabla de unión

Dado que lo que intenta hacer es una autoasociación, solo necesita llamar a hasMany una vez, lo que creará una tabla de unión

User.hasMany(User, { as: 'Contacts', joinTableName: 'userHasContacts'})

Lo que creará la tabla userHasContacts como:

CREATE TABLE IF NOT EXISTS `userHasContacts` (`userId` INTEGER , `ContactsId` INTEGER , `createdAt` DATETIME NOT NULL, `updatedAt` DATETIME NOT NULL, PRIMARY KEY (`userId`,`ContactsId`)) ENGINE=InnoDB;

Para encontrar usuarios y sus contactos, puede hacer lo siguiente:

User.find({ where: ..., include: [{model: User, as: 'Contacts'}]})