2017-07-30 60 views
1

我是Angular,Js等的新手,在理解如何處理嵌套數據時遇到問題。例如:在Angular 2中嵌套json數據 - 如何過濾?

我有四個JSON文件:

  • 類別
  • 小類
  • 帖子
  • 評論

最好是有4個不同的文件,如上述,或一個像這樣:

{ 
"id_category":"1", 
"name":"business", 
"subcategories":{ 
    "id":"1", 
    "name":"ecommerse", 
    "posts": { 
     "id": 1, 
     "title": "New post" 
     "comments": { 
      "id": 1, 
      "text": "text text text" 
    } 
    } 
} 

當然這只是一個例子,但對於這個例子,我需要通過Id = 1來查找評論,以獲取關於哪個帖子的評論與哪個子類別和類別相關的信息。

現在我有四個不同的文件和服務從json文件中獲取數據。我可以通過ID得到具體評論:

getComment(Id: number) { 
    return this.comments.find(
     (comment) => 
     comment.id === Id 
    ); 
} 

好的,很好。但是,如果我想獲取有關此評論的帖子,子類別和主類別的信息,我該怎麼辦?

+0

你可以在類似的數據庫如何處理這個問題,有一個關鍵的職位,類別的方式做到這一點,並存儲子類別在表示評論 – 0mpurdy

+0

Thx的json對象中,是的,但我不確定這是否是一種很好的方法來執行此操作:/。也許我不需要4個json文件,但只有一個?也許ES6(地圖,過濾器)可以幫助,但我不知道它是否有意義。 – Przemo

+0

這取決於你如何提供數據,你如何搜索/顯示它,沒有一個**最好* * 辦法。如果你想要一個組合的方法,你可以有一個包含4個對象(每個對象一個)的JSON文件。也許這裏的其他人有更好的指導,雖然 – 0mpurdy

回答

0

這取決於您的應用程序的具體需求是什麼。

通過這樣的結構:

{ 
"id_category":"1", 
"name":"business", 
"subcategories":{ 
    "id":"1", 
    "name":"ecommerse", 
    "posts": { 
     "id": 1, 
     "title": "New post" 
     "comments": { 
      "id": 1, 
      "text": "text text text" 
    } 
    } 
} 

你可以遍歷分類,並顯示一個列表,然後允許用戶選擇單個category,並將其賦值給var currentCategory

然後,您可以遍歷currentCategory.subcategories以允許用戶選擇subcategory並將其分配給var currentSubCategory。您將繼續鑽取,然後進入currentSubCategory.posts,允許用戶選擇一個post,將其分配到var currentPost,然後遍歷它以顯示currentPost.comments

如果您從數據庫中提取數據,以便讓用戶深入數據以進行顯示,那麼類似這樣的工作將會起作用。

如果你在JSON文件維護數據,那麼我想看看像JSON服務器https://github.com/typicode/json-server

如果你正在構建更多的東西充實,你有一個數據庫後端,利用數據庫和唐不要嘗試在您的JSON中重新創建該功能,使用JSON作爲數據傳輸,但不要嘗試在前端代碼中複製整個表或複雜的數據結構,只需在需要時獲取所需內容即可這將使一個更加穩定和可擴展的應用程序,並將使您更容易地獲取和更新小的可管理塊中的數據。

對於嘲諷使用JSON數據後臺,可以考慮JSON-服務器

https://www.npmjs.com/package/json-server

+0

謝謝斯蒂芬。我正在使用json文件,因爲我現在需要一個模擬文件(我試圖通過構建一些應用程序來學習angular 2,下一步將使用MongoDb/Firebase或其他)。不管怎樣,我會盡力按照你上面描述的方式去做:) – Przemo

+0

對於嘲笑後端,我使用https://www.npmjs.com/package/json-server –