Mysql
 sql >> база данни >  >> RDS >> Mysql

Рекурсивно включва Sequelize?

Има няколко решения, ако се намери за това, първото е по-сложно, но ще даде по-добра производителност:

Това е за внедряване на йерархична структура от данни в MySQLI като ръководството тук

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

Този, който се казва Модел на вложен набор.

Второто решение, което всъщност приложих сам, е рекурсивно разширяване, това използва много mysql заявки и вярвам, че може да бъде подобрено, но е бързо и работи добре. Работата е да се използва за всяка категория функция като тази

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

Така че преминава през категориите и ги разширява рекурсивно.

Може би и това ще помогне на някого.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Грешка се появява в sql при опит за добавяне на няколко външни ключа

  2. Вземете последния отделен набор от записи

  3. Свързване с MySQL бази данни

  4. Хибернация, производителност на JDBC и Java при среден и голям набор от резултати

  5. Инсталиране на mysql на leopard:Не мога да се свържа с локален MySQL сървър чрез сокет