問題タブ [plumatic-schema]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
clojure - Clojure 1.4 の Prismatic スキーマ?
現在 Clojure 1.4 を使用しているプロジェクトで使用するPrismatic/schemaを評価しています。現時点では、プロジェクトの Clojure をアップグレードしたくありません。スキーマには Clojure 1.5.1 が必要ですが、repl でのいくつかの基本的なテストでは、Clojure バージョンが 1.4 に変更されても問題は示されませんでした。
Clojure 1.4 でスキーマを使ってみた人はいますか?
これが私が試したことです(project.cljでClojureを1.4.0に変更した後):
問題はありません。私が気づいたことの 1 つは、Clojure 1.4 でスキーマ テストが完全に実行されない (実行すらされない) ことです。これはあまり気にしませんが、プロジェクトの機能に実際の問題があれば気にします。
clojure - Prismatic Schema を使用した複数のポリモーフィック値の検証
少し前に単純なポリモーフィック スキーマについて尋ねたところ、しばらくの間はうまくいきました。
検証したいマップには、別のキーの値に依存する追加の値があります。
オブジェクトの不自然な例:
ここでの識別子は:type
と:method
で、それぞれに有効な兄弟キーと値の独自のセットがあります。
以前は:type
存在するだけで、次のものが機能しました。
ただし、複数の弁別子があるため、条件分岐の数は組み合わせになります。
1 つのオプションは{s/Any s/Any}
、マップと使用をs/both
許可することですが、予期しないキー/値が無効と見なされるため、スキーマが「緩い」ことを許可できません。
また、このライブラリを使用して検証を機能させるためだけに、検証中のマップの構造を変更したくありません。
複数の条件付きサブスキーマを持つマップの厳密な検証を実現する適切な方法はありますか?
clojure - Clojure で Prismatic/schema を使用した関数検証
Prismatic/schemaを使用して関数を検証することについて、非常に簡単な質問があります。単一のキーを持つマップのスキーマがあります。その値は、Bar
スキーマを単一の引数として取り、何かを返す関数です (副作用に使用されます)。
問題は、どのように定義するAction
かです。私はこれを試しました:
これは有望に見えますが、検証に失敗することはできません:
ここで何が間違っていますか?
clojure - Prismatic/Schemaで検証をオン/オフにするグローバルフラグ?
開発中に、schema.core/defn で定義されたすべての関数の検証を有効にしたいと考えてい:^:always-validate
ます。このライブラリでこれは可能ですか?
おそらくメタデータはコンパイル時にのみ追加されるため、次のようなものは機能しません。
validation - Liberator でのフォーム検証に Prismatic/schema を使用する
Prismatic/schemaはフォーム検証に適していますか? 以前にフォーム検証ライブラリを設計したことはありませんが、例外をスローする代わりに、次のようなものを出力すると思いますs/validate
。
誰かが Compojure と Liberator で使用したことを願っていますが、オンラインで何も見つかりません。
clojure - インスタンス使用時の ClassNotFoundException? Clojure の defrecord タイプについて
特定のスキーマで名前が付けられたマップのキーのみを選択する関数を作成しました。
これは、私の単体テストでは問題なく機能します。
ただし、foo.schema/select-schema
完全に別のプロジェクトで使用すると (つまりlein install
、私の foo プロジェクトで jar を構築し、それを私の中に貼り~/.m2/repository
付けて、依存関係として名前を付けます)、次のようになりますClassNotFoundException
。
Prismatic Schema のソースを調べたところOptionalKey
、defrecord タイプであることがわかりました。少しグーグルで調べてみると、 defrecord が Java クラスを生成し、それを定義する名前空間を要求した後にインポートする必要があることがわかりましたが、含むプロジェクトでそれを実行しようとしてfoo.schema
も違いはありません: 単体テストでは機能しますが、foo
依存関係として使用する他のプロジェクトでは機能しません。
clojure - Prismatic スキーマで clojure.core/Extend を使用すると、s/validate と s/with-fn-validation で s/protocol の動作が異なります
clojure.core/extend を使用して動的に生成する defrecord のインスタンスのプロトコルを検証しようとしています
以下では、satisfies が true を返し、 (s/validate (s/protocol ...)) が例外をスローしないことがわかりますが、s/with-fn-validation を実行すると、"(not (satisfies? protocol . .... "スキーマ例外ですが、この本体内では (satisfies? protocol x) に対して同じ真の結果が得られ続けます
ここにもコードの要点があります
clojure - Prismatic Schema強制中に発生したValidationErrorを調べる方法は?
Schema coercer を作成し、結果として得られる一連のデータを強制しようとした結果:
実際の検証エラーの説明を得るにはどうすればよいですか?