Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Rekurencyjne obejmują Sequelize?

Istnieje kilka rozwiązań, jeśli znalezione dla tego pierwsze jest bardziej skomplikowane, ale zapewni lepszą wydajność:

Ten dotyczy implementacji hierarchicznej struktury danych w MySQLI jak w przewodniku tutaj

http://mikehillyer.com/articles/managing-hierarchical-data- w-mysql/

Ten, który nosi nazwę Model zestawu zagnieżdżonego.

Drugie rozwiązanie, które faktycznie zaimplementowałem, to rozwijanie rekurencyjne, to wykorzystuje wiele żądań mysql i wierzę, że można je ulepszyć, ale jest szybkie i działa dobrze. Chodzi o to, aby użyć dla każdej funkcji kategorii takiej jak ta

var expandSubcategories = function (category) {
    return new promise(function (resolve, reject) {
        category.getSubcategories().then(function (subcategories) {
            //if has subcategories expand recursively inner subcategories
            if (subcategories && subcategories.length > 0) {
                var expandPromises = [];
                _.each(subcategories, function (subcategory) {
                    expandPromises.push(expandSubcategories(subcategory));
                });

                promise.all(expandPromises).then(function (expandedCategories) {
                    category.subcategories = [];

                    _.each(expandedCategories, function (expandedCategory) {
                        category.subcategories.push(expandedCategory);
                    }, this);


                    //return self with expanded inner
                    resolve(category);
                });

            } else {
                //if has no subcategories return self
                resolve(category);
            }
        });
    });
};

Więc przechodzi przez kategorie i rozwija je rekursywnie.

Może to też komuś pomoże.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Kod błędu:1822. Nie można dodać ograniczenia klucza obcego. Brakujący indeks dla ograniczenia

  2. MySQL:Przytnij tabelę vs Usuń z tabeli

  3. MySQL Wybierz WHERE IN podanej kolejności

  4. Aktualizacja MySQL PRZYPADEK KIEDY / WTEDY / INACZEJ

  5. Nie można otworzyć i zablokować tabel uprawnień:Tabela „mysql.user” nie istnieje