2017-08-10 13 views
0

私はMongoDB- databaseに次の文書を持っています。このドキュメントは、私のUIのフォルダを表します。サブフォルダは、superFolderId上の親フォルダを参照します。Java - バックエンドの木構造をフロントエンドで表示するために格納する

このツリーは私のangularJS UIで表示されます。私の質問は、この構造をAngularJS Frontendに親切に表示するために、このツリー構造をバックエンドのリストに格納する方法です。

私はこの方向でどんなヒントがあってもうれしいです。

{ 
"_id" : ObjectId("598c43aa76eba30a8ab373ac"), 
"name" : "Folder1", 
"created" : ISODate("2017-08-10T11:29:41Z"), 
"projectId" : "598c425d76eba30a8ab373a6", 
"superFolderId" : "", 
} 
{ 
"_id" : ObjectId("598c43b176eba30a8ab373ad"), 
"name" : "Folder1_1", 
"created" : ISODate("2017-08-10T11:29:49Z"), 
"projectId" : "598c425d76eba30a8ab373a6", 
"superFolderId" : "598c43aa76eba30a8ab373ac", 
} 
{ 
"_id" : ObjectId("598c43f676eba30a8ab373ae"), 
"name" : "Folder1_1_1", 
"created" : ISODate("2017-08-10T11:30:58Z"), 
"projectId" : "598c425d76eba30a8ab373a6", 
"superFolderId" : "598c43b176eba30a8ab373ad", 
} 

答えて

0

サーバー側にツリーを格納する必要はありません。十分な(あなたの例に関して)_idレコードは他のレコードの場合superFolderIdです。

function _makeTree(options) { 
    var children, e, id, o, pid, path, path_obj, temp, _i, _len, _ref; 
    id = options.id || "id"; 
    pid = options.parent_id || "parent_id"; 
    children = options.children || "children"; 
    path = "path"; 
    path_obj = "path_obj"; 

    temp = {}; 
    o = []; 
    _ref = options.q; 
    for (_i = 0, _len = _ref.length; _i < _len; _i++) { 
     e = _ref[_i]; 
     e[children] = []; 
     e[path_obj] = []; 
     temp[e[id]] = e; 

     if (temp[e[pid]] != null) { 

      e[path] = temp[e[pid]].path + '/' + e.name; // generates read-only String path to node 

      e[path_obj] = _.clone(temp[e[pid]].path_obj); 

      e[path_obj].push({name: e.name, id: e.id, org_id: e.org_id}); 

      temp[e[pid]][children].push(e); 
     } else { 
      e[path] = e.name; 
      e[path_obj].push({name: e.name, id: e.id, org_id: e.org_id}); 
      o.push(e); 
     } 
    } 
    return o; 
}; 

**私は私のプロジェクトからそれを取ったので、いくつかの冗長なものは、あなたが

削除することができます:あなたは、クライアント側のレコードのリストを取得したら

、あなたは簡単としてツリーに変換することができますその後

Demo in fiddle


あなたは、TRをレンダリングすることができます私が投稿したようにHEREまたはGoogleだけ:

+0

素晴らしい!どうもありがとう!!!あなたは私をたくさん助けました! – quma

関連する問題