Я пытаюсь решить, как я хочу обрабатывать ошибки проверки в 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')] }
});
флаг Mongoose 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 не поддерживал пользовательские сообщения до самого последнего времени, что заставляет меня думать, что они являются анти-шаблонами на уровне модели.
Какой лучший способ реализовать эти валидаторы? Должен ли я позволить им генерировать собственные ошибки, а затем каким-то образом их интерпретировать?