Mongoose で検証エラーを処理する方法を決定しようとしています。
node-validator を使用したカスタム エラー メッセージ
node-validatorを使用して独自の検証ルールを定義しました。次に例を示します。
UserSchema.path('username')
.validate(function (username) {
return validator.check(username).notEmpty()
}, 'Username cannot be blank')
次のようなエラーが生成されます。
username:
{ message: 'Validator "Username cannot be blank" failed for path username',
name: 'ValidatorError',
path: 'username',
type: 'Username cannot be blank' },
マングースバリデーターの使用
ただし、node-validator は独自のエラー メッセージを提供します。mongoose-validator Node モジュールを使用してnode-validator をスキーマに直接プラグインする場合、代わりにこれらのエラー メッセージを直接使用できます。
var UserSchema = new Schema({
name: { type: String, validate: [validate('notEmpty')] }
});
次のようなエラー メッセージが生成されます。
name:
{ message: 'Validator "String is empty" failed for path name',
name: 'ValidatorError',
path: 'name',
type: 'String is empty' } }
ここでもカスタム エラー メッセージを提供できます。
var UserSchema = new Schema({
name: { type: String, validate: [validate({message: 'Name cannot be blank' }, 'notEmpty')] }
});
マングースrequired
の旗
Mongoose では、必要に応じてフィールドを定義できます。
var UserSchema = new Schema({
name: { type: String, required: true }
});
次のようなエラー メッセージが生成されます。
name:
{ message: 'Validator "required" failed for path name',
name: 'ValidatorError',
path: 'name',
type: 'required' } }
質問
これらのバリデーターは、組み込みのエラー メッセージを使用することを望んでいるように感じます。たとえば、required
上記のようにフィールドを宣言したいのですが、エラー メッセージをカスタマイズする方法が見つかりません。また、mongoose-validator モジュールはごく最近までカスタム メッセージをサポートしていませんでした。これは、モデル レベルでのアンチパターンであると私に思わせます。
これらのバリデーターを実装する最良の方法は何ですか? 独自のエラーを生成させてから、何らかの方法で後で解釈する必要がありますか?