微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用normalizr将遍历路径作为ID标准化“ JSON Schema” JSON?

如何解决使用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 举报,一经查实,本站将立刻删除。