sql >> Databáze >  >> RDS >> Mysql

Rekurzivní zahrnují Sequelize?

Existuje několik řešení, pokud se najde, toto první je složitější, ale poskytne lepší výkon:

Tento je o implementaci hierarchické datové struktury v MySQLI, jako je průvodce zde

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

Ten, který se jmenuje The Nested Set Model.

Druhé řešení, které jsem ve skutečnosti implementoval sám, je rekurzivní rozšiřování, toto používá spoustu požadavků mysql a věřím, že lze zlepšit, ale je rychlé a funguje dobře. Jde o to použít pro každou kategorii funkci, jako je tato

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);
            }
        });
    });
};

Jde tedy o procházení kategorií a jejich rekurzivní rozšiřování.

Možná to také někomu pomůže.



  1. Jak mohu použít kaskádové mazání se serverem SQL?

  2. Jak vytvořit vybraná dynamická pole z tabulky v mysql?

  3. Spark JoinWithCassandraTable na klíči oddílu TimeStamp STUCK

  4. Vzdálená připojení Mysql Ubuntu