2017-03-17 20 views
1

所有:試着瞭解normalizr的schema.entity VS數組和對象

我想了解實體數組和對象之間的關係:

  1. ,他們只是不同的格式來描述數據的結構差異?或者實體與其餘兩個相差甚遠?
  2. 規範化的數據結果具有像{result:,entities:}這樣的結構,是隻用schema定義的數據結構。實體放在實體左右可以schema.Array和Object?當我定義一個模式只使用Object和Array時,它似乎沒有放在實體中,我不確定它是我的模式def錯誤還是normalizr如何工作?
  3. 如果只有schema.Entity()定義的數據可以放入實體中,那我怎樣才能把一個數據數組放入它中,如{0:..,1:..,2 :,}。

對於〔實施例,我有這樣的數據:

var data = [ 
    { 
     id:"0", 
     items:[ 
      { 
       id: "0", 
       data: {name:"data-0-0"} 
      }, 
      { 
       id: "1", 
       data: {name:"data-0-1"} 
      } 
     ] 
    }, 
    { 
     id:"1", 
     items:[ 
      { 
       id: "0", 
       data: {name:"data-1-0"} 
      }, 
      { 
       id: "1", 
       data: {name:"data-1-1"} 
      } 
     ] 
    } 
] 

const normalizedData = normalize(data, [{items:[{data:{}}]}]); 

And the normalized data is like: 

{ 
    "entities": {}, 
    "result": { 
     "0": { 
      "id": "0", 
      "items": [ 
       { 
        "id": "0", 
        "data": { 
         "name": "data-1-0" 
        } 
       } 
      ] 
     } 
    } 
} 

感謝

回答

3

問題:他們只是不同的格式來描述數據結構的差異?或者實體與其餘兩個相差甚遠?

答案:是的。 Entity是具有與其相關聯的唯一標識符的單一對象。 ArrayObject是不能唯一標識的更一般的結構。就你而言,看起來你只需要使用ArrayEntity來描述你所描述的數據。

問題:數據結構是否只用schema定義?實體放在實體中?

答案:是的。

+0

謝謝,我更新了我的問題到#3,謝謝你的幫助 – Kuan