2017-10-06 87 views
1

我在这里有一组奇怪的数据。规范化链接标识

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是最好的形式给出你的任务,但像这样将工作

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