normalizr 模式 - 子引用父

normalizr schema - child reference parent

尝试掌握如下所示的 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}}

是否可以添加基于独特零售商的奥特莱斯参考资料?例如

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}}

Is it possible to add outlet references based on unique retailers?

不是真的。 Normalizr returns 的 result 始终采用与输入数据相同的格式。由于您的数据是 { name, outlet },因此这些是唯一存在于 result 输出中的键。

如果您在顶级对象(整个 data 结构)上有一个唯一标识符,您可以将 processStrategy 用于 schema.Entity 并随机排列,但是真的不推荐这样做。