Проверьте дату JS и дату Firestore с помощью Joi

#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()