尝试理解normalizr的schema.entity VS Array and Object

Try to understand normalizr's schema.entity VS Array and Object

全部:

我正在尝试了解实体数组和对象之间的关系:

  1. 它们只是描述数据差异结构的不同格式吗?或者 Entity 与其余两个有很大不同?
  2. 规范化的数据结果具有类似{result:,entities:}的结构,是仅用schema.Entity定义的数据结构放在实体中,或者schema.Array 和对象?当我只使用对象和数组定义模式时,似乎没有放入实体,我不确定这是我的模式定义错误还是 normalizr 的工作方式?
  3. 如果只有 schema.Entity() 定义的数据可以放入实体中,那么如何将数据数组放入其中,例如 {0:.., 1:..,2:,}?

例如,我有这样的数据:

var data = [
    {
        id:"0",
        items:[
            {
                id: "0",
                data: {name:"data-0-0"}
            },
            {
                id: "1",
                data: {name:"data-0-1"}
            }
        ]
    },
    {
        id:"1",
        items:[
            {
                id: "0",
                data: {name:"data-1-0"}
            },
            {
                id: "1",
                data: {name:"data-1-1"}
            }
        ]
    }
]

const normalizedData = normalize(data, [{items:[{data:{}}]}]);

And the normalized data is like:

{
    "entities": {},
    "result": {
        "0": {
            "id": "0",
            "items": [
                {
                    "id": "0",
                    "data": {
                        "name": "data-1-0"
                    }
                }
            ]
        }
    }
}

谢谢

问题: 它们只是描述数据差异结构的不同格式吗?或者 Entity 与其余两个有很大不同?

答:是的。 Entity 是一个具有唯一标识符的单一对象。 ArrayObject 是更通用的结构,无法唯一标识。在您的情况下,您似乎只需要对所描述的数据使用 ArrayEntity

问题: 数据结构是否只用模式定义?实体放入实体内?

回答:是的