gpt4 book ai didi

javascript - 如何使用 Normalizr 为递归模型定义模式

转载 作者:可可西里 更新时间:2023-11-01 02:00:58 26 4
gpt4 key购买 nike

尝试规范化负载时遇到一些问题,该负载包含与父级类型相同的嵌套模式,使用 Normalizr

例如,我有一个初始对象 (menu),它有一个子对象 (sections),它是一个对象数组 (section) , 这可以深入。

{
id: 123,
sections: [{
id: 1,
sections:[{ id: 4, sections: [ id: 5, sections: [] ] }]
}, {
id: 2,
sections:[]
}, {
id: 3,
sections:[]
}]
}

我首先创建了一个 menu 模式,它在定义中包含链接到 sections 模式的部分,这在第一次通过时有效,但随后就不行了处理部分的子部分,因此我在 section 模式中添加了一个具有相同名称的后续定义(值得一试),但它没有用。

const section = new schema.Entity('sections')

const sections = new schema.Entity('sections', {
sections: section
})

const menu = new schema.Entity('menu', {
sections: [ sections ]
})

section.define({ sections })

我希望以下面的对象结束:

{
entities: {
menu: {
sections: [1, 2, 3]
},
sections: [{
1: { id: 1, sections: [4] },
2: { id: 2, sections: [] },
3: { id: 3, sections: [] },
4: { id: 4, sections: [5] },
5: { id: 5, sections: [] },
}]
}
}

最佳答案

您的sections 架构应该是一个数组

const section = new schema.Entity('sections')
const sections = new schema.Array(section);
section.define({ sections });
const menu = new schema.Entity('menu', { sections });

然后,在使用它时......

const data = {
id: 123,
sections: [{
id: 1,
sections:[{ id: 4, sections: [ { id: 5, sections: [] } ] }]
}, {
id: 2,
sections:[]
}, {
id: 3,
sections:[]
}]
};

normalize(data, menu)

将返回:

{
"entities": {
"sections": {
"1": { "id": 1, "sections": [ 4 ] },
"2": { "id": 2, "sections": [] },
"3": { "id": 3, "sections": [] },
"4": { "id": 4, "sections": [ 5 ] },
"5": { "id": 5, "sections": [] }
},
"menu": {
"123": { "id": 123, "sections": [ 1, 2, 3 ] }
}
},
"result": 123
}

关于javascript - 如何使用 Normalizr 为递归模型定义模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41506533/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com