問題タブ [joi]
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.
validation - Joi スキーマをマージする方法はありますか?
2 つの joi スキーマを 1 つのスキーマにマージする方法はありますか?
スキーマ 1
スキーマ 1
マージされたスキーマ:
ネストされたオブジェクトがなければ、 で簡単に実行できObject.assign
ますが、ネストされたオブジェクトは関数呼び出しであるため、深いオブジェクト マージでさえネストされたオブジェクトでは機能しません。
javascript - 検証のデフォルト値を設定
Joi を使用して、hapijs フレームワークを使用して node.js サーバーでサービスのペイロードを検証しています。以前は次のように見えていました(私のタイプスクリプトコードとjavascriptにコンパイルした後):
ここで、2 つのパラメーターのデフォルト値を設定します。コードが JavaScript で記述されている場合は、次のようにできます。
Swagger でテストしたところ、デフォルト値が実際に設定した値になりました。
しかし、私のプロジェクトは typescript で書かれています。私は同じことをして、typescript コードをコンパイルしました。結果の JavaScript は次のようになります。
swagger では、デフォルト値は適用されません。
ここに私の質問があります:
- コンパイル後にコードが異なるのはなぜですか?
- とはどういう
["default"]("defaultstring")
意味ですか? - 次のようにコンパイルできることを確認するために typescript コードを作成するにはどうすればよいですか
Joi.string().default("defaultstring")
アップデート
@rsp の投稿によると、質問 2 の形式は、オブジェクトのプロパティにアクセスする方法が異なるだけです。ここからも参考になります。しかし、それらに違いがあるかどうかは説明されていません。誰にもアイデアはありますか?
Update2
JS プロパティにアクセスする 2 つの方法の違いは次のとおりです。ブラケットの方法を使用しても悪影響はないようです。ただ、私の場合はデフォルト値がswaggerに反映されません。ついて研究を行う予定です。
joi - Joi Array validation 、別のフィールド値に基づいて少なくとも 1 つのアイテムを強制します
次の検証ブロックがあります
プライベート フラグが false の場合、アクセス許可に少なくとも 1 つの項目を要求したい前の質問 ( items() ではなく includes() を使用) に基づいて、次のようなものを使用する必要があります。
しかし、これは動作しません とにかくそれを検証するには?フィードバックをありがとう