#javascript #validation #joi
#язык JavaScript #утверждение #дзеи
Вопрос:
В настоящее время я открываю Joi
для себя библиотеку, и — в это время — это отличный опыт.
Однако я столкнулся с крошечной проблемой, которую не могу решить. Нужна помощь или совет!
Рассмотрим следующую схему (немного):
const workSchema = Joi.object({ timeline_created: Joi.date().allow(null).required()) }
Это прекрасно работает, когда я отправляю JS
дату (или null
значение).
Тем не менее, я использую Firestore
, который преобразует дату JS в такой объект:
timeline_created: Timestamp { _seconds: 1637258607, _nanoseconds: 349000000 }
Таким образом, я не могу проверить свою схему (дата не Joi
известна).
Затем мой вопрос: как написать мою схему (я хочу, чтобы она была строгой/точной), но в то же время проверяла a JS Date
и a Firestore Date
.
Спасибо
ПРАВКА: я добился некоторого прогресса в:
timeline_created: Joi.object().keys({_seconds: Joi.number(),_nanoseconds: Joi.number()}).required()
Это подтверждает мой Firestore
объект.
Однако, как я мог бы также проверить, является ли timeline_created
это null
датой или датой JS? Тнх.
Ответ №1:
Это работает:
Joi.alternatives([Joi.object().keys({ _seconds: Joi.number(), _nanoseconds: Joi.number() }), Joi.date(), null]).required()