gpt4 book ai didi

validation - 在 Liberator 中使用 Prismatic/schema 进行表单验证

转载 作者:行者123 更新时间:2023-12-03 11:24:12 27 4
gpt4 key购买 nike

Prismatic/schema很适合表单验证?我以前从未设计过表单验证库,但我想它会输出类似这样的东西而不是在 s/validate 上抛出异常:

{::errors {:name [{:missing "Required field."}
{:length "Must be at least 3 characters."}]
:email [{:email "Must be a valid email address"}]}}

我希望有人在 Compojure 和 Liberator 上使用过它,但我在网上找不到任何东西。

最佳答案

Dante on GitHub 找到了一些好 helper ,但使用许可不明确:

(ns dante.tools.schemas
(:require [dante.tools.namespaces :refer [export]]
[schema.core :as s]
[schema.coerce :as coerce]
[schema.utils :refer [validation-error-explain]])
(:import [schema.utils NamedError ValidationError]))

(defn explain [errors]
(cond
(map? errors)
(->> errors
(map (fn [[k v]]
[k (explain v)]))
(into {}))

(or (seq? errors)
(coll? errors))
(map explain errors)

(instance? NamedError errors)
[(.name errors)
(explain (.error errors))]

(instance? ValidationError errors)
(str (validation-error-explain errors))

:else
(str errors)))

(defn- coercercions [schema]
(or
(coerce/+string-coercions+ schema)
(coerce/set-matcher schema)))

(defn validate [schema value]
((coerce/coercer schema coercercions) value))

关于validation - 在 Liberator 中使用 Prismatic/schema 进行表单验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25911555/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com