Pull to refresh

Comments 9

Для кофе от 1.7 вместо require('coffee-script'); надо писать require('coffee-script/register');
Можете пожалуйста поделится причиной почему нужно включать именно «coffee-script/register»? Если это связано с ошибкой при развертывании приложения на forever — то я этой ошибки не заметил, хотя использую кофе 1.7.1
Просто напросто изменение интерфейса… Смотрите change log к версии 1.7.0.
Даёшь больше статей разных и хороших про Sails.JS!
При создании модели атрибутам можно задавать ограничения, например required: true. В последствии, если переданный набор данных не подходит под эти ограничения, то в колбэк передается объект ошибки валидации определенной структуры и с текстом на английском. Хочется его перевести, но стандартных возможностей сделать это я не нашел. Нашел костыль, который работает, но не нравится. Есть что-нибудь в этом направлении?
Если я правильно понял вы имеете ввиду ошибку которую например выдает waterline если есть несоответствие каких либо правил из атрибутов. Если это так — то возвращаеться примерно такой объект.
{
  "error": "E_VALIDATION",
  "status": 400,
  "summary": "1 attribute is invalid",
  "model": "Test",
  "invalidAttributes": {
    "lalala": [
      {
        "rule": "string",
        "message": "`undefined` should be a string (instead of \"null\", which is a object)"
      },
      {
        "rule": "required",
        "message": "\"required\" validation rule failed for input: null"
      }
    ]
  }
}

Я конечно плохо понимаю что ты хочешь сделать, но если ты хочешь в корне изменить текст то тебе придется ковырять в исходниках и там переводить места где происходит генерация объекта ошибок, но это занятие лишнее и неблагодарное. Если тебе просто удобно получать логи в разобранном виде и на русском — советую просто написать небольшой парсер для этого дела. Лично я для похожей ситуации (удобное ведения логов) использовал xml. за более удобную структуру (Имхо). В особых случаях можно использовать lodash в нем можно разбирать сложные структуры (не для простых отчетов об ошибках). Возможно я просто неправильно понял вопрос, но это те решения которые можно использовать. Если же тебе просто не нравиться читать отчеты на английском, то не повод ли это просто лучше выучить английский?
Отчеты меня не волнуют. Мне надо пользователю вывести ошибку — «Вы не заполнили имя», когда пользователь его не заполнил, а в атрибуте name стоит required : true. Из коробки есть возможность вывести ошибку только на английском языке, что некорректно для русскоязычных пользователей. Надо перевести.
Сейчас у меня есть service transformValidationMessage, который разбирает этот объект ошибки валидации и заменяет в нем соответствующий message. Выглядит это так.

Модель User:
module.exports = {
  attributes: {
    name: {
      type: 'string',
      required: true,
      unique: true
    }
  },
  validationMessages: {
    name: {
      required: "Вы не заполнили имя."
    }
  }
};

И потом в колбэке при обработке ошибок:
if (err.ValidationError) {          
  error = transformValidationMsg(User, err.ValidationError);
}

Затем во view возвращаю измененную таким образом ошибку.
Есть ощущение, что можно сделать лучше, но как — не знаю.
видимо я слишком сложно оценил проблему, зачем делать столько телодвижений. jQuery.Validator, простая обработка поля на клиенте. Даже серверная реализация не нужна — хватит простого плагина. А я думал что вы имеете ввиду глобальную обработку объектов логирования ).
Нельзя делать только клиентскую валидацию без серверной. Javascript может быть отключен, не говоря о том, что запрос можно отправить без помощи html-формы.
Нужна именно удобная валидация на сервере.
Sign up to leave a comment.

Articles