잠시 전에 나는 simple polymorphic schemas에 대해 물었습니다. 그 대답은 한동안 잘 수행되었습니다.프리즘 스키마를 사용하여 여러 다형성 값 확인
이제 유효성을 검사하려는지도에는 다른 키의 값에 따라 추가 값이 있습니다.
객체의 인위적인 예 : 여기
{:type :foo {:type :bert {:type :foo
:foo-param :bar :bert-size :medium :foo-param :bar
:method :baz :method :baz :method :bang
:baz-rate :max} :baz-rate :max} :bangness :considerable}
판별 자의 유효 블링 키 및 값 자체의 세트를 각각 갖는 :type
및 :method
이다.
:type
가 존재하고,이 일을 다음
(def ^:private test-base-schema {:type (s/enum :foo :abc :banana)})
(def test-schema
(s/conditional #(= (:type %) :foo)
(merge test-base-schema {:foo-param s/Keyword})
; other conditions here
))
을 그러나 지금은 하나 이상의 판별이 있다는 것을, 조건 분기의 수를 조합 할 것이다.
하나의 옵션은 s/both
을 사용하여 {s/Any s/Any}
을 허용하지만 예기치 않은 키/값이 유효하지 않은 것으로 간주되므로 스키마가 '느슨하게'허용 할 수 없습니다.
또한이 라이브러리를 사용하여 유효성 검사를 허용하기 위해 유효성 검사중인 맵의 구조를 변경하고 싶지 않습니다.
여러 조건부 하위 스키마가있는지도의 엄격한 유효성 검사를 수행하는 훌륭한 방법이 있습니까?