sql >> Database >  >> RDS >> Mysql

Recursieve omvatten Sequelize?

Er zijn maar weinig oplossingen hiervoor, de eerste is ingewikkelder, maar geeft betere prestaties:

Deze gaat over het implementeren van een hiërarchische gegevensstructuur in MySQLI zoals de gids hier

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

Degene die The Nested Set Model heet.

De tweede oplossing die ik zelf heb geïmplementeerd, is recursief uitbreiden, deze gebruikt veel mysql-verzoeken en kan volgens mij worden verbeterd, maar het is een snelle en werkt goed. Het ding is om voor elke categorie een functie zoals deze te gebruiken

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

Het gaat dus door de categorieën en breidt ze recursief uit.

Misschien helpt dit ook iemand.



  1. Werken met datums in PostgreSQL

  2. MYSQL-database-optimalisatie met behulp van indexering

  3. Kan ik een HTTP GET rechtstreeks in SQL uitvoeren onder MySQL?

  4. Hoe een sql-server met php verbinden met xampp?