Деревья - сохранение родительского пути - PullRequest
0 голосов
/ 09 декабря 2011

У меня есть встроенная (обновляемая) древовидная структура в массиве - учитывая предстоящие возможности $slice выбирать только части массива, я думаю о реализации способа отображения только одной (под) ветвидерево.

Если я правильно понимаю, чтобы сделать это эффективно, мне придется сохранить путь (grandparent.parent.child) в каждом элементе дерева.

Однако я не могуУвидеть хороший способ управления этими путями (при обновлении), похоже, что это мои варианты:

  1. слепо доверять параметрам на стороне клиента и просто вставлять в массив без проверки пути.
  2. Извлечение всего документа, вычисление пути и только затем сохранение нового элемента

Что вы думаете?Ветви не могут перемещаться в дереве, они только вставляются / обновляются.

1 Ответ

0 голосов
/ 09 декабря 2011

Я просто не думал достаточно глубоко.На момент вставки у меня в настоящее время есть только родительский идентификатор, но когда у меня появляются пути - я могу использовать их для поиска родителя, затем я могу убедиться, что родительский объект существует точно так же, как я делаю это в настоящее время.with parent-id.

Единственная проблема в этом подходе состоит в том, что мне нужно сохранить путь даже для ветвей, у которых нет родителя (потомков root).

ТогдаЯ могу просто найти их в массиве с помощью запроса Монго, и если они не существуют, путь является поддельным, и я прекращаю обновление.

...