2013-03-21 3 views
1

Я новичок в Node.js, и у меня возникла проблема с настройкой сообщения о проверке в node.js.I создалось простое приложение с Compound JS с использованием операции CRUD. В моем приложении есть поле под названием «id». В поле «id» принимается только целочисленное значение. Затем я проверяю поле, используя следующий код в model/user.js.Настроить сообщение о проверке в node.js

module.exports = function (compound, User) { 
var num = /^\s*\d+\s*$/; 
User.validatesFormatOf('id', {with: num, message:"is not a number"}); 
}; 

Используя приведенный выше код, он отлично работает. Но я также хочу проверить, пустое поле или нет. Затем я немного меняю код. Модифицированный код выглядит следующим образом:

module.exports = function (compound, User) { 
    var num = /^\s*\d+\s*$/; 
    User.validatesFormatOf('id', {with: num, message: {blank: "can't be blank", with: "is not a number"}}); 
    }; 

Затем сообщение проверки, если поле пустым будет отображаться как это «Id не может быть пустым». Но когда я ввожу значение в поле id, отличном от номера, сообщение об ошибке проверки будет «Id [object Object]». Я думаю, что ключевое слово с не поддерживается. Является ли здесь любое другое ключевое слово, например «blank» или «min», поэтому я могу получить сообщение проверки, так как «Id не является числом».

Я нашел решение для этого, так что модифицированная версия user.js как это:

module.exports = function (compound, User) { 
    var num = /^\s*\d+\s*$/; 
    User.validatesPresenceOf('id', {message: "can't be blank"}); 
    User.validatesFormatOf('id', {with: num, message:"is not a number"}); 
    }; 

Проблема с приведенным выше кодом является то, что он отображает два сообщения проверки в то же время, то есть по умолчанию и пользовательское пустое сообщение отображается одновременно. Мое требование - показывать только одно сообщение проверки для поля за раз. Это возможно?

ответ

1

Это похоже на ошибку в JugglingDB (ORM, используемую CompoundJS).

Рассмотрим следующий код:

var juggling = require('jugglingdb'); 
var Schema = juggling.Schema; 

var schema = new Schema('memory'); 
var User = schema.define('User'); 
var num = /^\s*\d+\s*$/; 

User.validatesPresenceOf('id', {message: "can't be blank"}); 
User.validatesFormatOf('id', {with: num, message:"is not a number"}); 
User.validatesFormatOf('id', {with: num, message:"is not a number"}); 

var user = new User({ id : '' }); 

user.isValid(function(valid) { 
    if (! valid) 
    { 
    console.log('invalid', user.errors); 
    } 
    else 
    { 
    console.log('valid'); 
    } 
}); 

Это будет фактически генерировать 3 ошибки:

invalid { id: [ 'can\'t be blank', 'is blank', 'is blank' ] } 

Если добавить еще один User.validatesFormat, он будет генерировать 4 ошибки. Это похоже на проблему определения области где-то в коде проверки JugglingDB, я опубликую отчет об ошибке.

На данный момент, возможно, вы можете просто использовать первую ошибку, которая возникает (user.errors[0]). EDIT: по внешнему виду, это то, что вам также нужно делать, если бы это сработало, поскольку JugglingDB будет запускать все тесты проверки и генерировать ошибку для всех неудачных тестов.

+0

[Сообщение об ошибке здесь] (https://github.com/1602/jugglingdb/issues/230) – robertklep

+0

[И ответ от разработчика здесь] (https://github.com/1602/jugglingdb/issues/230 # issuecomment-15223812). Другими словами, 'validatesFormatOf' * также * выполняет проверку' blank ', и вы не можете переопределить генерируемое сообщение. – robertklep

 Смежные вопросы

  • Нет связанных вопросов^_^