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

0 投票する
8 に答える
12553 参照

validation - Joi スキーマをマージする方法はありますか?

2 つの joi スキーマを 1 つのスキーマにマージする方法はありますか?

スキーマ 1

スキーマ 1

マージされたスキーマ:

ネストされたオブジェクトがなければ、 で簡単に実行できObject.assignますが、ネストされたオブジェクトは関数呼び出しであるため、深いオブジェクト マージでさえネストされたオブジェクトでは機能しません。

0 投票する
4 に答える
17198 参照

javascript - 検証のデフォルト値を設定

Joi を使用して、hapijs フレームワークを使用して node.js サーバーでサービスのペイロードを検証しています。以前は次のように見えていました(私のタイプスクリプトコードとjavascriptにコンパイルした後):

ここで、2 つのパラメーターのデフォルト値を設定します。コードが JavaScript で記述されている場合は、次のようにできます。

Swagger でテストしたところ、デフォルト値が実際に設定した値になりました。

しかし、私のプロジェクトは typescript で書かれています。私は同じことをして、typescript コードをコンパイルしました。結果の JavaScript は次のようになります。

swagger では、デフォルト値は適用されません。

ここに私の質問があります:

  1. コンパイル後にコードが異なるのはなぜですか?
  2. とはどういう["default"]("defaultstring")意味ですか?
  3. 次のようにコンパイルできることを確認するために typescript コードを作成するにはどうすればよいですかJoi.string().default("defaultstring")

アップデート

@rsp の投稿によると、質問 2 の形式は、オブジェクトのプロパティにアクセスする方法が異なるだけです。ここからも参考になります。しかし、それらに違いがあるかどうかは説明されていません。誰にもアイデアはありますか?

Update2

JS プロパティにアクセスする 2 つの方法の違いは次のとおりですブラケットの方法を使用しても悪影響はないようです。ただ、私の場合はデフォルト値がswaggerに反映されません。ついて研究を行う予定です。

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

joi - Joi Array validation 、別のフィールド値に基づいて少なくとも 1 つのアイテムを強制します

次の検証ブロックがあります

プライベート フラグが false の場合、アクセス許可に少なくとも 1 つの項目を要求したい前の質問 ( items() ではなく includes() を使用) に基づいて、次のようなものを使用する必要があります。

しかし、これは動作しません とにかくそれを検証するには?フィードバックをありがとう