Mam bazę danych z trzema podstawowymi tabelami: users
, teams
i folders
połączone dwoma tabelami skrzyżowania, users_teams
i teams_folders
. Istnieje relacja wiele do wielu między użytkownikami i zespołami oraz między zespołami i folderami (użytkownik może być w więcej niż jednym zespole, a zespoły mogą posiadać więcej niż jeden folder).Łączenie wielu tabel skrzyżowań z Sequelize
Sequelize wykonuje wspaniałą pracę polegającą na zarządzaniu relacjami między użytkownikami a zespołami i folderami, ale nie mogę znaleźć sposobu na nawiązanie relacji między użytkownikami i folderami.
Czy istnieje sposób na połączenie dwóch tabel połączeń bez odwoływania się do surowego kodu SQL?
Wydaje się, że nie ma sposobu, aby osiągnąć to elegancko lub w rozsądnej liczbie kroków. Próbowałem metod takich jak user.getFolders()
, Folder.findAll({ include: [User] })
, ale Sequelize nie wydaje się być w stanie zrozumieć trzy poziomowej hierarchii.
Kłopotliwe, prawdziwym problemem jest to, że nie zdawałem sobie sprawy, że ta metoda została określona jako "upragnione ładowanie" i przejrzałem tę sekcję dokumentacji. Dzięki! – jtschoonhoven
Wygląda na to, że 'hasMany' ma być używany z relacjami 1: M:' N: M asocjacje nie są obsługiwane z hasMany. Użyj belongsToMany zamiast " – jmu
Zaktualizowany, dzięki @jmu :) –