我在compojure-api中使用plumatic/schema来验证端点的输入。
我的模式中有两个键:Field1和Field2。我希望能够为我的模式定义一个规则,例如:
WHEN Field1 = "AA"
THEN Field2 is required-key
ELSE Field2 is optional-key但是,我似乎只能将键设置为require或optional。可以使一个密钥依赖于另一个密钥吗?
(schema/def Field1
(schema/enum "AA" "BB"))
(schema/def Field2
(schema/enum "AAAA" "BBBB" "CCCC"))
(schema/defschema MySchema
{(schema/required-key :field1) Field1
; Here I want some kind of logic to make the key required if
(if (= Field1 "AA")
(schema/required-key :field2) Field2
(schema/optional-key :field) Field2)
})发布于 2020-10-25 21:44:01
(use '[plumbing.core])
(schema/defschema MySchema
(schema/conditional
(fn-> :field1 (= "AA"))
(schema/schema-with-name {(schema/required-key :field1) Field1
(schema/required-key :field2) Field2} "cond1")
:else
(schema/schema-with-name {(schema/required-key :field1) Field1
(schema/optional-key :field2) Field2} "cond2")))https://stackoverflow.com/questions/64523867
复制相似问题