問題タブ [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.

0 投票する
1 に答える
202 参照

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 でスキーマ テストが完全に実行されない (実行すらされない) ことです。これはあまり気にしませんが、プロジェクトの機能に実際の問題があれば気にします。

0 投票する
1 に答える
1392 参照

clojure - Prismatic Sc​​hema を使用した複数のポリモーフィック値の検証

少し前に単純なポリモーフィック スキーマについて尋ねたところ、しばらくの間はうまくいきました。

検証したいマップには、別のキーの値に依存する追加の値があります。

オブジェクトの不自然な例:

ここでの識別子は:type:methodで、それぞれに有効な兄弟キーと値の独自のセットがあります。

以前は:type存在するだけで、次のものが機能しました。

ただし、複数の弁別子があるため、条件分岐の数は組み合わせになります。

1 つのオプションは{s/Any s/Any}、マップと使用をs/both許可することですが、予期しないキー/値が無効と見なされるため、スキーマが「緩い」ことを許可できません。

また、このライブラリを使用して検証を機能させるためだけに、検証中のマップの構造を変更したくありません。

複数の条件付きサブスキーマを持つマップの厳密な検証を実現する適切な方法はありますか?

0 投票する
1 に答える
1131 参照

clojure - Clojure で Prismatic/schema を使用した関数検証

Prismatic/schemaを使用して関数を検証することについて、非常に簡単な質問があります。単一のキーを持つマップのスキーマがあります。その値は、Barスキーマを単一の引数として取り、何かを返す関数です (副作用に使用されます)。

問題は、どのように定義するActionかです。私はこれを試しました:

これは有望に見えますが、検証に失敗することはできません:

ここで何が間違っていますか?

ドキュメントとcore_testのテストを読みましたが、これを行う方法がわかりません。

0 投票する
1 に答える
426 参照

clojure - Prismatic/Schemaで検証をオン/オフにするグローバルフラグ?

開発中に、schema.core/defn で定義されたすべての関数の検証を有効にしたいと考えてい:^:always-validateます。このライブラリでこれは可能ですか?

おそらくメタデータはコンパイル時にのみ追加されるため、次のようなものは機能しません。

0 投票する
3 に答える
1653 参照

validation - Liberator でのフォーム検証に Prismatic/schema を使用する

Prismatic/schemaはフォーム検証に適していますか? 以前にフォーム検証ライブラリを設計したことはありませんが、例外をスローする代わりに、次のようなものを出力すると思いますs/validate

誰かが Compojure と Liberator で使用したことを願っていますが、オンラインで何も見つかりません。

0 投票する
1 に答える
263 参照

clojure - インスタンス使用時の ClassNotFoundException? Clojure の defrecord タイプについて

特定のスキーマで名前が付けられたマップのキーのみを選択する関数を作成しました。

これは、私の単体テストでは問題なく機能します。

ただし、foo.schema/select-schema完全に別のプロジェクトで使用すると (つまりlein install、私の foo プロジェクトで jar を構築し、それを私の中に貼り~/.m2/repository付けて、依存関係として名前を付けます)、次のようになりますClassNotFoundException

Prismatic Sc​​hema のソースを調べたところOptionalKey、defrecord タイプであることがわかりました。少しグーグルで調べてみると、 defrecord が Java クラスを生成し、それを定義する名前空間を要求した後にインポートする必要があることがわかりましたが、含むプロジェクトでそれを実行しようとしてfoo.schemaも違いはありません: 単体テストでは機能しますが、foo依存関係として使用する他のプロジェクトでは機能しません。

0 投票する
1 に答える
324 参照

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) に対して同じ真の結果が得られ続けます

ここにもコードの要点があります

0 投票する
1 に答える
375 参照

clojure - Prismatic Sc​​hema強制中に発生したValidationErrorを調べる方法は?

Schema coercer を作成し、結果として得られる一連のデータを強制しようとした結果:

実際の検証エラーの説明を得るにはどうすればよいですか?