2017-07-13 4 views
5

Normalizr:スキーマ定義およびデータのためのこのようなNormalizrで<a href="https://github.com/paularmstrong/normalizr/blob/master/docs/api.md#uniondefinition-schemaattribute" rel="noreferrer">Union</a>ような多型スキーマの多型のマッピングのためではなくスキーマよりタイプによって識別エンティティ

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定義のスキーマのキーのみが含まれます。これは、後で要素を完全に非正規化することなく一致させることを困難にする可能性がある。

resultを指定すると、normalizrを使用してこのようなデータを正規化して、entitiesからエンティティを簡単に取得できるようにするより良い方法はありますか?タイプは、エンティティのキ​​ー(つまり、非常に簡単である)、およびキーの名前と一致していることを

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です(より複雑なデータでそれをやりたいのであればもっと苦労します)。私はそのような正規化は非正規化するのが難しくなると思うが、私は正規化だけに興味がある。

答えて

関連する問題