#node.js #joi
#node.js #joi
Вопрос:
Я не уверен, задавался ли этот вопрос раньше, но я не смог найти ничего, связанного с этим. В моем текущем проекте мы используем схемы Joi для выполнения проверок. Мне нравится возможность определять пользовательские схемы и запускать проверки для входящих объектов с использованием этой схемы. У меня есть задача, в которой мне нужно отфильтровать свойства объекта. Что-то похожее на _.pick
, но свойства сложны и имеют дело с вложенными объектами и массивами. У нас уже есть схемы joi, которые мы разработали для выполнения проверок, но я подумываю использовать то же самое для получения конкретных свойств объекта, таких как фильтрация данных объекта с использованием этой схемы. Что-то вроде этого:
const Joi = require('joi');
const val = {
a: 'test-val1',
b: 'test-val2'
}
const schema = Joi.object({
a: Joi.string()
});
// now the below result have the object with both `a` and `b`
// properties but I want joi to strip the `b` property from the object
const result = schema.validate(value, { allowUnknown: true });
В документации Joi ничего подобного не упоминается. Я наткнулся на эту библиотеку (ajv), которая делает то, что я хочу, но я хотел точно знать, нельзя ли этого достичь с помощью Joi
. Заранее спасибо.
Комментарии:
1. Из документов, разве вам не нужно добавлять
removeAdditional
флаг для удаления свойств, не указанных в схеме joi?2. @KevinFriedheim Это для
ajv
библиотеки, а не для Joi. Я хотел знать, предлагает ли Joi что-то подобное.
Ответ №1:
Joi предлагает stripUnkown
свойство, которое можно использовать для получения только полей, определенных в схеме.