Я работаю над проектом, чтобы научиться использовать библиотеку Joi в React. Преподаватель использует более старую, устаревшую версию библиотеки, поэтому я работаю над преобразованием версии для инструкторов для использования нового синтаксиса. Мне нужно передать объект Joi для схемы и проверить вызов этого объекта с помощью объекта, который я проверяю, в качестве первого аргумента.
У меня возникли проблемы с выяснением того, как динамически вызывать значение объекта Joi для передачи в новую схему.
Вот мой код в том виде, в котором он сейчас используется, с использованием Joi v16.
schema = Joi.object({
username: Joi.string()
.alphanum()
.min(3)
.required()
.label("Username"),
password: Joi.string()
.min(5)
.required()
.label("Password")
});
validateProperty = ({ name, value }) => {
const obj = { [name]: value };
const localSchema = Joi.object({ [name]: "" }); //The copied schema segment goes here in place of the empty string.
const { error } = localSchema.validate(obj);
return error ? error.details[0].message : null;
};
Моя интуиция такова, что это «кажется» неправильным, как будто я должен делать это гораздо проще... но я не уверен, что делать, чтобы двигаться вперед.
Для сравнения вот пример инструктора, написанный на Joi v13.
validateProperty = ({ name, value }) => {
const obj = { [name]: value };
const schema = { [name]: this.schema[name] };
Joi.validate(obj, schema);
return error ? error.details[0].message : null;
};