我正在规范一个级别嵌套的批量列表。如果第一级批次被称为主要,则嵌套的批次是奴隶。
// my schema
const lot = new schema.Entity('lots');
const lots = new schema.Array(lot);
lot.define({slaves: lots});
// my data
const list = [
{
id: 1,
name: 'Lot #1',
slaves: [
{
id: 2,
name: 'Lot #2'
}
]
}, {
id: 4,
name: 'Lot #4',
slaves: []
}
];
normalize(list, lots);
我明白了:
{
entities : {
lots: {
'1': {
id: 1,
name: 'Lot #1',
slaves: [2]
},
'2': {
id: 2,
name: 'Lot #2'
},
'4': {
id: 4,
name: 'Lot #4',
slaves: []
}
}
},
result : [1, 4]
}
它有什么问题。但我想在标准化结果中添加更多内容,我不知道如何。
所以前面的例子将按照以下标准化:
{
entities : {
lots: {
'1': {
id: 1,
name: 'Lot #1',
slaves: [2]
},
'2': {
id: 2,
name: 'Lot #2',
master: 1
},
'4': {
id: 4,
name: 'Lot #4',
slaves: []
}
}
},
result : {
masters: [1, 4],
slaves: [2],
}
}
这可以用normalizr吗?
答案 0 :(得分:2)
在规范化的奴隶上拥有主地段号
使用自定义processEntity
功能绝对可以实现。有一个example here。简而言之:
const processStrategy = (value, parent, key) => ({
...value,
master: key === 'slaves' ? parent.id : undefined
});
const lot = new schema.Entity('lots', { processStrategy });
结果
中还有一系列从属ID
这是不可能的。 result
始终取决于传递给normalize
的条目架构。