2017-07-13 37 views
5

對於多態型的模式,如在Normalizr Union,用於模式定義和數據:Normalizr:確定由類型,而不是模式實體多態映射

const data = { owner: { id: 1, type: 'user', name: 'Anne' } }; 

const user = new schema.Entity('users'); 
const group = new schema.Entity('groups'); 
const unionSchema = new schema.Union({ 
    user: user, 
    group: group 
}, 'type'); 

const normalizedData = normalize(data, { owner: unionSchema }); 

歸一化數據的形式如下:

{ 
    entities: { 
    users: { '1': { id: 1, type: 'user', name: 'Anne' } } 
    }, 
    result: { owner: { id: 1, schema: 'user' } } 
} 

實體在模式密鑰上鍵入,在本例中爲users,但結果對象僅包含UnionSchema定義中模式的密鑰。如果沒有完全非規範化,這可能會使後面的元素很難匹配。

有沒有一些更好的方式與normalizr正常化這樣的數據,使其更容易拉從entities實體,給予result?對於我而言,理想情況下,數據可以從像歸:

const data = { owner: { id: 1, type: 'users', name: 'Anne' } }; 

{ 
    entities: { 
    users: { '1': { id: 1, type: 'users', name: 'Anne' } } 
    }, 
    result: { owner: { id: 1, type: 'users' } } 
} 

注意該類型的實體鍵(這是非常微不足道的),關鍵的名稱相匹配結果是type(如果你想用更復雜的數據來做更多的痛苦)。我懷疑這種規範化會使規範化變得更加困難,但我只對規範化感興趣。

回答