1

angular-ui-tree ライブラリを使用してフォルダー構造を表示しています。

ノード オブジェクトを MongoDB データベースに格納しています。

各ノードオブジェクトは次のようになります

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

Angular-UI-TREE はこのように埋められます

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" : []    
         }
]

このデータを使用すると、ツリーは次のようになります

Folder 1 
|
---> Folder 1-1
     |
     ---> Folder 1-1-1
|
---> Folder 1-2
Folder 2

上記のようにスキーマを使用して mongoDB に格納された一連のノードから、UI ツリーを作成できるように DATA 配列を作成したいと考えています。

これを行う最良の方法は何ですか?

または、これらのノードをデータベースに格納して、その情報を取得してツリーに入力しやすくするためのより良い方法はありますか?

4

1 に答える 1

1

使用しているサーバー言語がわからないので、非常に一般化したままにします。
再帰クエリまたはフラット リストからネストされたリストを作成するという、いくつかの異なるオプションがあります。

1) 再帰クエリ: 既存のノードのすべての子ノードを取得し、ルート ノードを取得し、結果を子ノードとして既存のノードに追加する関数を記述し、返された結果ごとに再帰クエリ関数を実行します。これにより、ルート ノードから始まる適切な構造が得られます。

2) 連想配列: mongo からすべてのノードを取得し、node_path をキーとする連想配列に配置します。このリスト内のすべてのアイテムを反復処理し、parent_path を連想配列のキーとして使用して、適切な親の「ノード」リストに追加します。次に、連想配列からルート ノードをパスで取得し、それを「データ」配列に割り当てます。オプションでダブルリンクして、親参照を強制することもできます。

回答 1 では、ルートが実際にリストである場合、ルート ノードを「ダミー」にする必要がある場合があります。回答 2 では、連想配列内のすべてのアイテムをスキャンして、parent_node のないアイテムをプルしてベース ルート リストを作成する必要がある場合があります。詳細については、フォローアップにお気軽にお尋ねください

幸運を!

于 2016-08-25T23:49:32.813 に答える