尝试掌握如下所示的normalizr,数据结构和架构:
const data = {
"name": "abc",
"outlet": [
{
"id": 1,
"retailer": {
"id": 1
}
},
{
"id": 2,
"retailer": {
"id": 1
}
}
]
}
const retailerSchema = new schema.Entity('retailers');
const outletSchema = new schema.Entity('outlets', {
retailer: retailerSchema
});
const normalized = normalize(data, {
retailers: [retailerSchema],
outlets: [outletSchema]
})
目前的结果:
normalized.result == {name: "abc", outlets: [1, 2]}
normalized.entities.retailers == {1: {id: 1}}
normalized.entities.outlets == {1: {id: 1, retailer: 1}, 2: {id: 2, retailer: 1}}
是否可以根据独特的零售商添加插座参考? e.g。
normalized.result == {name: "abc", outlets: [1, 2], retailers: [1]}
normalized.entities.retailers == {1: {id: 1, outlets: [1, 2]}}
normalized.entities.outlets == {1: {id: 1, retailer: 1}, 2: {id: 2, retailer: 1}}
答案 0 :(得分:0)
是否可以根据独特的零售商添加插座参考?
不是真的。 Normalizr返回的result
始终采用与输入数据相同的格式。由于您的数据为{ name, outlet }
,因此这些是result
输出中唯一存在的密钥。
如果您在顶级对象(整个data
结构)上有唯一标识符,则可以使用processStrategy
schema.Entity
并随机播放内容,但这样做真的不推荐。