Проверка объектов Javascript, содержащих даты

Что является хорошей практикой для проверки объекта JavaScript, содержащего поля даты?

Существуют валидаторы JSON, такие как tv4, которые могут проверять формат строк.

Однако наша бизнес-логика работает с датами экземпляра JavaScript-Date, и эти объекты не проходят проверку.

Наша текущая процедура

  1. Прочитайте объект business с помощью JSON.parse(), используя восстановление даты
  2. Обработайте объект с помощью бизнес-логики, затем подтвердите с помощью
  3. Преобразуйте объект в JSON с помощью строки даты.
  4. Прочитать строку обратно с помощью JSON.parse(), теперь без оживления
  5. Проверить этот объект

Есть ли лучший способ проверки в отличие от шагов 3, 4 и 5? Предпочтительно проверять бизнес-объект напрямую?

Пример:

Строка JSON

{
    "birth": "1994-03-17"
}

Схема для строки JSON

{
    type: 'string',
    format: 'date-time'
}

Объект бизнес

{
    birth: new Date("1994-03-17")
}

person Wolfgang Kuehn    schedule 17.07.2014    source источник
comment
если (бизнес-объект ['рождение'] экземпляр даты)   -  person kennebec    schedule 17.07.2014
comment
Да, это то, что должен делать валидатор. В дополнение к проверке множества других полей без даты.   -  person Wolfgang Kuehn    schedule 17.07.2014


Ответы (1)


Если вы используете библиотеку tv4, вы можете сделать:

tv4.addFormat('date-time', function (data) {
    if (data instaceof Date) return null;
    else return "not a valid date";
});

и ваша проверка должна быть:

{
    type: "object",
    format: "date-time"
}

Этот метод упоминается в вопросе, который вы разместили (дата-время схемы json делает не правильно проверил)

person Tsanyo Tsanev    schedule 17.07.2014
comment
О, почему я не заметил трюка, изменяющего тип на объект! Позвольте мне проверить нашу кодовую базу... - person Wolfgang Kuehn; 17.07.2014