尝试理解normalizr的schema.entity VS Array and Object
Try to understand normalizr's schema.entity VS Array and Object
全部:
我正在尝试了解实体数组和对象之间的关系:
- 它们只是描述数据差异结构的不同格式吗?或者 Entity 与其余两个有很大不同?
- 规范化的数据结果具有类似{result:,entities:}的结构,是仅用schema.Entity定义的数据结构放在实体中,或者schema.Array 和对象?当我只使用对象和数组定义模式时,似乎没有放入实体,我不确定这是我的模式定义错误还是 normalizr 的工作方式?
- 如果只有 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
是一个具有唯一标识符的单一对象。 Array
和 Object
是更通用的结构,无法唯一标识。在您的情况下,您似乎只需要对所描述的数据使用 Array
和 Entity
。
问题: 数据结构是否只用模式定义?实体放入实体内?
回答:是的
全部:
我正在尝试了解实体数组和对象之间的关系:
- 它们只是描述数据差异结构的不同格式吗?或者 Entity 与其余两个有很大不同?
- 规范化的数据结果具有类似{result:,entities:}的结构,是仅用schema.Entity定义的数据结构放在实体中,或者schema.Array 和对象?当我只使用对象和数组定义模式时,似乎没有放入实体,我不确定这是我的模式定义错误还是 normalizr 的工作方式?
- 如果只有 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
是一个具有唯一标识符的单一对象。 Array
和 Object
是更通用的结构,无法唯一标识。在您的情况下,您似乎只需要对所描述的数据使用 Array
和 Entity
。
问题: 数据结构是否只用模式定义?实体放入实体内?
回答:是的