1

SimpleSchema を使用してデータの検証を行っています。正規表現検証のエラーメッセージを取得しようとする場合を除いて、ほとんどの場合うまくいくようです。

私が持っているものは次のとおりです。

FormSchema = new SimpleSchema({
  name: {
    label: "Name",
    type: String,
    min: 2,
    max: 25
  },
  email: {
    label: "Email",
    type: String,
    regEx: SimpleSchema.RegEx.Email
  }
});

var errors = [];

var data = {
  name: '',
  email: '',
};

var context = FormSchema.newContext();

if (!context.validate(data)) {
  var fields = context.invalidKeys();

  for (var i in fields) {
    errors.push(context.keyErrorMessage(fields[i].name));
  }
}

この後errorsに、以下が含まれます。

["Name must be at least 2 characters", "Unknown validation error"]

私の理解では、正規表現に対して定義されたデフォルトのエラーメッセージがあります。SimpleSchema.RegEx.Email

emailフィールドのエラー メッセージを取得するにはどうすればよいですか?

4

1 に答える 1

0

この質問は数か月前のものですが、ここにメールが届いた他の人に回答を試みます...

テストのためにこのコードを実行していませんが、最初の考えでは、最初のキー 'name' が検証され、それが失敗した場合、表示されているエラーが返されます["Name must be at least 2 characters", "Unknown validation error"]

さらに説明しましょう:

定義する場所: var data = { name: '', email: '', };

名前フィールドの値を空として定義しました。context.validate(data)その後、後でいくつかの行を実行します。また、名前のオプションを構成しmin: 2ました。これは、型が String であるというコンテキストで、min オプションが、データ オブジェクト内の文字列に少なくとも 2 文字の長さの文字列が含まれているかどうかを検証します (上限を規定する最大値は言うまでもありません)同じように)。として設定されている name パラメーターのコンテキストでは、[String]これは、スキーマの name プロパティが文字列の配列であることを意味し、次に min オプションが name プロパティのエントリ数に対して検証を試みます。

文字列の長さを満たす名前をデータ オブジェクトに指定してエラーを修正するか、検証要件から最小値を削除してください。

次に、SimpleSchema から、データ オブジェクトの電子メール プロパティが電子メールの正規表現を満たさないというエラーが表示されます。

于 2015-11-26T01:03:17.003 に答える