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

时间:2017-03-17 16:42:30

标签: normalizr

所有

我试图理解实体数组和对象之间的关系:

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

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

    谢谢

1 个答案:

答案 0 :(得分:3)

问题: 它们只是描述数据差异结构的不同格式吗?或实体与其余两个相差甚远?

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

问题: 数据结构是否仅使用架构定义?实体放在实体内部?

答案:是。