如何解决使用normalizr将遍历路径作为ID标准化“ JSON Schema” JSON?
我正在尝试规范JSON Schema JSON,特别是ngx-schema-form风格的JSON,例如binding_sample_schema.json。我还想将遍历路径用作实体的ID(因为似乎没有什么比这更一致和唯一了)。
我有一个mostly working solution in this stackblitz。
但是我必须使用笨拙的processstrategy
才能将父路径数据传递给子代:
{
idAttribute: (_value,parent,key) => {
const parentPath = parent.path || "";
if (parent.type === "array") {
return `${parentPath}/*`;
}
return `${parentPath}/${key}`;
},processstrategy: (value,key) => {
const parentPath = parent.path || "";
let path = `${parentPath}/${key}`;
let properties;
if (parent.type === "array") {
path = `${parentPath}/*`;
}
if (value.type === "object") {
properties = { ...value.properties,path };
}
return { ...value,path,properties };
}
}
特别是对于具有object
属性的properties
类型,子属性似乎无法从祖父母那里获取path
数据:
{
// Some nested object type property...
{
"type": "object","path": "/parentOfObject/keyOfObject" // <-- grandparent.path
"properties": { // <-- parent
"child1": {
// My parent is `properties`,but how do I access the `path` of the parent of my parent?
// To generate my path `${grandparent.path}/${key}`,i.e. `/parentOfObject/keyOfObject/child1`
},"child2": {
// ...
}
}
}
}
总体而言,该解决方案似乎很尴尬,并在path
上添加了残留的properties
属性。更好的解决方案是在将遍历路径ID传递给normalizr之前创建它吗?
感谢任何建议或替代解决方案。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。