Использование схемы Joi для получения объекта json с полями, указанными в схеме

#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 свойство, которое можно использовать для получения только полей, определенных в схеме.