#hapijs
Вопрос:
Как мне получить массив или список имен полей, которые были установлены в качестве необязательных в объекте Joi?
Например:
export const schema = Joi.object<SomeType>({
field1: Joi.string().required(),
field2: Joi.string().guid(),
field3: Joi.string().allow('').optional(),
field4: Joi.string().allow('').optional(),
});
Я должен быть в состоянии восстановить поле 3, поле 4.
Хапи Дзеи https://www.npmjs.com/package/@hapi/joi
Ответ №1:
Вы можете использовать describe
для этого:
Возвращает объект, представляющий внутреннюю конфигурацию схемы. Полезно для отладки и предоставления конфигурации схемы другим системам, например, допустимых значений в пользовательском интерфейсе.
И вот мы начинаем:
for (const [key, value] of Object.entries(queueSchemaBase.describe().keys)) {
if (value.flags?.presence === 'optional') {
console.log(`${key} is optional`);
}
}
Выход:
field3 is optional
field4 is optional