sql >> Databasteknik >  >> RDS >> Mysql

Rekursiv inkluderar Sequelize?

Det finns få lösningar om den här första är mer komplicerad men ger bättre prestanda:

Den här handlar om att implementera hierarkisk datastruktur i MySQLI som guiden här

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

Den som heter The Nested Set Model.

Den andra lösningen som jag faktiskt implementerade av mig själv är rekursiv expansion, den här använder många mysql-förfrågningar och jag tror att den kan förbättras, men den är snabb och fungerar bra. Saken är att använda för varje kategori funktion så här

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 igenom kategorierna och utökar dem rekursivt.

Kanske kommer detta att hjälpa någon också.



  1. konvertera tidszon till en annan tidszon

  2. MySQL/SQL:Uppdatering med korrelerad underfråga från själva den uppdaterade tabellen

  3. 3 sätt att konvertera HEX till INT i SQL Server (T-SQL)

  4. Hur lång är SHA256-hash?