2016-08-25 2 views
1

각도 -ui- 트리 라이브러리를 사용하여 폴더 구조를 표시하고 있습니다.angular-ui-tree, DATABASE의 데이터에서 트리 채우기

노드 객체를 MongoDB 데이터베이스에 저장합니다.

은 각 노드 객체는 모양이

{ 
    "node_name" : "Folder 1", 
    "node_path" : "AAABBB", 
    "node_id" : 103, 
    "node_parent_path" : "AAA", 
    "node_parent_id" : 13, 
    "template" : "Template 1" 
} 

각-UI-TREE가, 나무는

Folder 1 
| 
---> Folder 1-1 
    | 
    ---> Folder 1-1-1 
| 
---> Folder 1-2 
Folder 2 
같이 보일 것이 데이터로이 방법

data = [ { 
      "node_name" : "Folder 1", 
      "node_path" : "AAABBB", 
      "node_id" : 103, 
      "node_parent_path" : "AAA", 
      "node_parent_id" : 13, 
      "nodes" : [ 
         { 
          "node_name" : "Folder 1-1", 
          "node_path" : "AAABBBAAA", 
          "node_id" : 10351, 
          "node_parent_path" : "AAABBB", 
          "node_parent_id" : 103, 
          "nodes" : [ 
             { 
              "node_name" : "Folder 1-1-1", 
              "node_path" : "AAABBBAAAAAA", 
              "node_id" : 415, 
              "node_parent_path" : "AAABBBAAA", 
              "node_parent_id" : 10351, 
              "nodes" : []  
             } 
            ] 
         }, 
         { 
          "node_name" : "Folder 1-2", 
          "node_path" : "AAABBBBBB", 
          "node_id" : 103531, 
          "node_parent_path" : "AAABBB", 
          "node_parent_id" : 103, 
          "nodes" : [ 

            ] 
         }, 
        ] 
     }, 
     { 

      "node_name" : "Folder 2", 
      "node_path" : "AAACCC", 
      "node_id" : 104, 
      "node_parent_path" : "AAA", 
      "node_parent_id" : 13, 
      "nodes" : []  
     } 
] 

에 채워집니다

위와 같이 좋아하는 스키마를 사용하여 mongoDB에 저장된 노드의 무리에서 t UI 배열을 채울 수있는 DATA 배열 ..

어떻게해야할까요?

또는 트리에 채울 정보를 더 쉽게 검색 할 수 있도록 데이터베이스에 이러한 노드를 저장하는 더 좋은 방법이 있습니까?

+0

ui-tree가 가장 좋습니다. 지금까지 해 온 일은 무엇입니까? –

답변

1

당신이 사용하고있는 서버 언어가 확실하지 않으므로 매우 일반화되어 있습니다.
재귀 쿼리 나 플랫 목록에서 중첩 목록을 빌드하는 두 가지 옵션이 있습니다.

1) 재귀 쿼리 : 는 기존 노드의 모든 자식 노드를 얻을 수있는 함수를 작성 루트 노드를 얻고, 각 반환 된 결과에 재귀 쿼리 기능을 실행, 기존 노드에 자식 노드로 결과를 추가 그것은 반환됩니다. 이것은 루트 노드로 시작하는 적절한 구조가됩니다.

2) 연관 배열 : 모든 노드를 mongo에서 가져 와서 node_path를 키로하는 연관 배열에 넣습니다. 이 목록에있는 모든 항목을 반복하면서 연관 배열에 대한 키로 parent_path를 사용하여 적절한 부모의 '노드'목록에 추가합니다. 연관 배열에서 경로로 루트 노드를 가져 와서 '데이터'배열에 할당합니다. 당신은 선택적으로 더블 링크를 사용하여 부모 참조를 시행 할 수 있습니다.

답변 1에 루트가 실제로 목록 인 경우 루트 노드를 '더미'해야 할 수도 있습니다. Answer 2에서는 associative 배열의 모든 항목을 스캔하여 parent_node없이 기본 배열을 가져와 기본 루트 목록을 만들어야 할 수도 있습니다. 더 많은 정보와 함께 followups을 주시기 바랍니다

행운을 빕니다!