Nested выборка из базы. Вопрос
Всем привет. Помогите советом или где можно поискать.
В общем ситуация такая. Есть база с объектами (не путать с объектами JS). Объекты расположены по каталогам. Максимальный уровень вложенности - 3. у объекта есть текущие параметры и эталонные. А вот теперь сама проблема: Допустим человек зашёл на страницу объектов (1-й уровень). В ответ получает список объектов и предупреждения, если текущие параметры не сходятся с эталонными. (В данной реализации проблем нет). Но вот если каталог, то он должен быть красным, если в каком-то из дочерних объектов есть проблемы. - объект - объект - каталог (содержит объекты) - каталог (содержит каталоги которые содержат объекты) Пока первое что всплывает в голове - делать выборку всех объектов начиная с корня. А дальше делать обработку данных и если в дочерних есть проблемы - каталог помечать как проблемный. Но такой подход кажется избыточен. Как бы вы этот процесс организовали бы? |
http://wwwendt.de/tech/dynatree/doc/samples.html Lazy loading Оно?
|
Не, не то.
Каталог - это абстрактное понятие (по другому группа объектов). Это объект, который содержит другие объекты. Только в отличии от объекта (статус которого легко вычислить сравнив текущий state с эталонным) - его статус зависит от статусов внутренних объектов. // с объектом всё просто obj.problems = obj.currentState === obj.setState; // а вот каталог зависит от внутренних объектов groupObjs = groupObjs.map(item => item.currentState === item.setState); if (groupObjs.indexOf(false) !== -1 ) { groupObjs.problems = true; } Написал упрощённую версию. Кодом просто показал зависимость статуса. Просто есть подозрения на избыточность, когда на первом экране будут объект и группа объектов. При этом в группе например 500 объектов и тогда приходится грузит их все, чтобы пометить группу, как проблемную... Просто другого решения сейчас не вижу. |
из вашего кода some будет в помощь
и где будут данные хранится? если это база, то пусть она возвращает значение вашей группы назвали же Nested, а ведь некоторые и рекурсивные запросы могут делать |
Часовой пояс GMT +3, время: 02:44. |