1

我可以dependencies使用非嵌套值(架构中的顶级),但我希望依赖项依赖于嵌套在object定义中的属性。

const schema = {
  type: "object",
  properties: {
    start: {
      type: "object",
      properties: {
        time: {
          type: "string"
        }
      }
    }
  },

  dependencies: {
    start: {
      properties: {
        end: {
          type: "object",
          properties: {
            time: {
              type: "string"
            }
          }
        }
      }
    }
  }
};

本质上,我想要一种方法让依赖项依赖于start属性,而是依赖于start.time属性。

我已经看过这个问题,答案表明架构不能“向上”查找树,尽管我不完全确定“向上”和“向下”在这种情况下的含义。

我看它的方式,如果依赖项可以依赖start,并且time是 内的属性start,那么time是“向下”树,而不是“向上”(?)

4

1 回答 1

0

关键字的dependencies存在是为了简化特定用例的架构。它为更简单的语法牺牲了一些灵活性和表现力。尽管您的用例非常相似,但它超出了dependencies可以做的范围。好消息是有办法做到这一点。

这个,

{
  "dependencies": {
    "some-propery-name": { ... some-schema ... }
  }
}

相当于,

{
  "if": { "required": ["some-property-name"] },
  "then": { ... some-schema ... }
}

您可以从那里推断来描述您的用例。

{
  "if": {
    "properties": {
      "start": { "required": ["time"] }
    },
    "required": ["start"]
  },
  "then": { ... some-schema ... }
}
于 2021-05-16T20:20:01.757 回答