使用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 (将#修改为@)