如何检查在Prismatic Sc​​hema强制期间引发的ValidationError?

时间:2015-02-15 18:27:48

标签: clojure plumatic-schema

由于创建了一个Schema coercer,然后尝试强制一组数据,我得到了结果:

#schema.utils.ErrorContainer{:error #<ValidationError schema.utils.ValidationError@2abfe6ca>}

如何获得实际验证错误的解释?

1 个答案:

答案 0 :(得分:2)

您可以找到ValidationError类型here的定义(因为您似乎在JVM上使用了Clojure我删除了#+cljs表达式):

(deftype ValidationError [schema value expectation-delay fail-explanation])

ErrorContainer记录的定义here

(defrecord ErrorContainer [error])

因此,要获得有关错误的更多信息,您只需访问内部ValidationError的任何字段:

(defn validation-error-details [error]
  (let [values (juxt #(.schema %) 
                     #(.value %)
                     #(.expectation-delay %)
                     #(.fail-explanation %))]
    (->> error :error values)))

;; Usage
(validation-error-details error) ; where error holds the value you posted