指定されていない要素で `validate`が失敗する可能性はありますか?

2
2022.01.14

objにスキーマに含まれていない要素が含まれている場合でも、以下の値は成功を返します。

質問

スキーマで指定されていない要素を見たときに、 検証 に失敗することは可能ですか?

ジェストはこのexpect(obj1).toEqual(obj2)を持っています。

Validateがそれができない場合、不要な要素を検出する必要があるオプションは何ですか?

const Schema = require("validate");

const obj = {good: "1", bad: "2"};

const user = new Schema({
  good: {
    type: String,
    required: true,
  }
});

const r = user.validate(obj);
console.log(r);
回答
2
2022.01.14

はい、Schemaには、ドキュメントからstrictオプションがあります。

スキーマ

スキーマは、オブジェクトを検証する必要がある構造を定義します。

パラメーター
  • obj スキーマ定義
  • opts オプション
    • opts.typecast

    • opts.strip

    • opts.strict

      スキーマで定義されていないプロパティがオブジェクトに含まれていると、検証が失敗します (オプション、デフォルトの false)。

だから、次のようなものが必要になります:

const options = { strict: true };

const user = new Schema({
  good: {
    type: String,
    required: true,
  }
}, options);