Javascript-форум (https://javascript.ru/forum/)
-   Node.JS (https://javascript.ru/forum/node-js-io-js/)
-   -   Nested выборка из базы. Вопрос (https://javascript.ru/forum/node-js-io-js/64436-nested-vyborka-iz-bazy-vopros.html)

nextdrift 11.08.2016 02:37

Nested выборка из базы. Вопрос
 
Всем привет. Помогите советом или где можно поискать.

В общем ситуация такая.

Есть база с объектами (не путать с объектами JS).
Объекты расположены по каталогам.

Максимальный уровень вложенности - 3.

у объекта есть текущие параметры и эталонные.

А вот теперь сама проблема:

Допустим человек зашёл на страницу объектов (1-й уровень).
В ответ получает список объектов и предупреждения, если текущие параметры не сходятся с эталонными. (В данной реализации проблем нет).

Но вот если каталог, то он должен быть красным, если в каком-то из дочерних объектов есть проблемы.

- объект
- объект
- каталог (содержит объекты)
- каталог (содержит каталоги которые содержат объекты)


Пока первое что всплывает в голове - делать выборку всех объектов начиная с корня. А дальше делать обработку данных и если в дочерних есть проблемы - каталог помечать как проблемный.

Но такой подход кажется избыточен.

Как бы вы этот процесс организовали бы?

Vlasenko Fedor 11.08.2016 14:18

http://wwwendt.de/tech/dynatree/doc/samples.html Lazy loading Оно?

nextdrift 11.08.2016 22:17

Не, не то.

Каталог - это абстрактное понятие (по другому группа объектов). Это объект, который содержит другие объекты.

Только в отличии от объекта (статус которого легко вычислить сравнив текущий state с эталонным) - его статус зависит от статусов внутренних объектов.

// с объектом всё просто
obj.problems = obj.currentState === obj.setState;


// а вот каталог зависит от внутренних объектов
groupObjs = groupObjs.map(item => item.currentState === item.setState);

if (groupObjs.indexOf(false) !== -1 ) {
  groupObjs.problems = true;
}



Написал упрощённую версию. Кодом просто показал зависимость статуса.

Просто есть подозрения на избыточность, когда на первом экране будут объект и группа объектов. При этом в группе например 500 объектов и тогда приходится грузит их все, чтобы пометить группу, как проблемную... Просто другого решения сейчас не вижу.

Vlasenko Fedor 12.08.2016 02:15

из вашего кода some будет в помощь
и где будут данные хранится? если это база, то пусть она возвращает значение вашей группы
назвали же Nested, а ведь некоторые и рекурсивные запросы могут делать


Часовой пояс GMT +3, время: 02:44.