2017-01-04 7 views
3

Я использую Joi пакет для проверки поля штампа времени, но как я могу установить значение макс() на нем, я хочу входной метку времени, чтобы быть меньше, чем текущий штамп времениJoi Отметка времени Unix установить максимальное значение

var schema = Joi.object().keys({ 
    t: Joi.date().timestamp('unix').max(moment().unix()), 
}) 

, но я получаю ошибку, что:

ребенок «т» терпит неудачу, потому что [ «т» должно быть меньше или равно «ВС 18 января 1970 7:35:17 GMT + 0330 (IRST)» ]

Я уверен, что moment().unix() возвращает текущую временную метку, но здесь она выставляется в строку.

ответ

0

Не похоже, что Joi.date().max() принимает отметки времени unix, несмотря на то, что в вашей схеме можно указать временную метку unix для входящих значений.

Если вам нужна текущая дата в вашей схеме, вы можете передать строку 'now' вместо даты. Или просто убедитесь, что вы вводите текущую дату в формате, который ожидает .max(). Я пробовал это, используя миллисекунды, и, похоже, работает так, как ожидалось. Я думаю, что Joi использует конструктор по умолчанию Date под капотом, чтобы построить даты для сравнения, которые ожидают миллисекунды.

var schema = Joi.object().keys({ 
    t: Joi.date().timestamp('unix').max(moment().unix() * 1000) 
}); 

Из документов на date.max()

Примечания: «теперь» может быть принят вместо даты так, чтобы всегда сравнивать относительно текущей даты, что позволяет явно обеспечить дату либо в прошлого или в будущем.

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