尝试规范化我的有效负载有一些问题,该有效负载包含与使用
Normalizr的父类型相同类型的嵌套模式
例如,我有一个初始对象(Menu),它有一个子(Sections),它是一个带有截面的对象数组,可以深入.
{
id: 123,sections: [{
id: 1,sections:[{ id: 4,sections: [ id: 5,sections: [] ] }]
},{
id: 2,sections:[]
},{
id: 3,sections:[]
}]
}
我开始创建一个菜单模式,其中定义中的部分链接到部分模式,适用于第一次传递,但后来不会处理部分的子节点,所以我在节模式中添加了一个后续定义同名(值得一试)但它没有用.
const section = new schema.Entity('sections')
const sections = new schema.Entity('sections',{
sections: section
})
const menu = new schema.Entity('menu',{
sections: [ sections ]
})
section.define({ sections })
我希望最终得到以下对象:
{
entities: {
menu: {
sections: [1,2,3]
},sections: [{
1: { id: 1,sections: [4] },2: { id: 2,sections: [] },3: { id: 3,4: { id: 4,sections: [5] },5: { id: 5,}]
}
}
解决方法
您的sections模式应该是一个Array.
const section = new schema.Entity('sections')
const sections = new schema.Array(section);
section.define({ sections });
const menu = new schema.Entity('menu',{ sections });
然后,在使用它…
const data = {
id: 123,sections: [ { id: 5,sections: [] } ] }]
},sections:[]
}]
};
normalize(data,menu)
将返回:
{
"entities": {
"sections": {
"1": { "id": 1,"sections": [ 4 ] },"2": { "id": 2,"sections": [] },"3": { "id": 3,"4": { "id": 4,"sections": [ 5 ] },"5": { "id": 5,"sections": [] }
},"menu": {
"123": { "id": 123,"sections": [ 1,3 ] }
}
},"result": 123
}