sql >> Database teknologi >  >> RDS >> Mysql

Rekursiv omfatter Sequelize?

Der er få løsninger, hvis den første er mere kompliceret, men vil give bedre ydeevne:

Denne handler om at implementere hierarkisk datastruktur i MySQLI som guiden her

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

Den, der hedder The Nested Set Model.

Den anden løsning, som jeg faktisk implementerede af mig selv, er rekursiv udvidelse, denne bruger masser af mysql-anmodninger, og jeg tror, ​​den kan forbedres, men den er hurtig og fungerer godt. Sagen er at bruge for hver kategori funktion som denne

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

Så det går gennem kategorierne og udvider dem rekursivt.

Måske vil dette også hjælpe nogen.



  1. Anvendelse af kolonnetilladelser for en tabel over en trigger

  2. Gem GUID i MySQL fra C#

  3. Under import af mysqldump-fil ERROR 1064 (42000) nær ' ■/ ' på linje 1

  4. Sådan grupperes efter DESC-rækkefølge