2017-10-06 18 views
1

여기에 이상한 데이터 세트가 있습니다.링크 된 ID 표준화하기

const data = { 
    profiles: [ 
     { name: 'Joe', photos: [1, 2, 3] }, 
     { name: 'Ryan', photos: [2] }, 
     { name: 'Bob', photos: null } 
    ], 
    linked: { 
     photos: [ 
      { id: 1, url: 'http://blah' }, 
      { id: 2, url: 'blah' }, 
      { id: 3, url: 'asdf' } 
     ] 
    } 
} 

내가 얻을 같은 모든 프로필 :

const { entities } = normalize(data, { 
    profiles: [ Profile ] 
}); 

하지만 linked.photos에서 항목과 photos ID 배열을 교체하려면이 가능합니까? 아니면 사후 처리가 필요합니까? 현재 맞춤 후 처리를하고 있습니다.

답변

1

나는 normalizr이 당신의 작업에 가장 적합한 aproach 있는지 모르겠지만, 이런 일이

const photoSchema = new schema.Entity('photos', {}); 
const normalized = normalize(data.linked.photos, [photoSchema]); 
const profileRawSchema = new schema.Entity('profiles', {}, {idAttribute: 'name'}) 
const profileSchema = new schema.Entity('profiles', { 
    photos: [photoSchema] 
}, {idAttribute: 'name'}); 
const normalizedProfiles = normalize(
    data.profiles, 
    [profileRawSchema] 
); 

normalized.entities.profiles = normalizedProfiles.entities.profiles; 
// here is what you want 
const desiredResult = denormalize(normalizedProfiles.result, [profileSchema], normalized.entities); 

Docs for denormalize

+0

와우 오, 당신이 그렇게 대단히 선생님 감사합니다 작동합니다! – Noitidart