Чтобы пользователь не мог отправлять вредоносные подобъекты в объект, я пытаюсь проверить его ввод с помощью Joi validate и схемы.
// This is the Joi schema
let schema = Joi.object().keys({
1: Joi.object().keys({
_id: Joi.string(),
title: Joi.string(),
modules: Joi.array().items(Joi.string())
}),
2: Joi.object().keys({
_id: Joi.string(),
title: Joi.string(),
modules: Joi.array().items(Joi.string())
}),
});
Теперь я хочу добиться, чтобы у пользователя быловозможность заполнения _id, заголовка и модулей под ключом 1 и ключом 2.
Если пользователь отправит ключ 3, я хочу, чтобы проверка схемы не прошла.
Если пользователь заполняет "firstName«под ключом 1 или ключом 2, что недопустимо, я хочу, чтобы его запрос также не удался.
Я знаю, что Джой предлагает« обязательный »метод и все, что не считается« обязательным »является необязательным.
Однако та же схема, которую я прикрепил выше, дает сбой, когда пользователь, например, не предоставляет «модули».Что необязательно, не обязательно.
Я пытаюсь решить проблему, используя валидатор Joi, или, может быть, использую другой модуль npm.
Примечание: на этот раз я просто хочу проверить ключи белого метки в объекте, а нечто-то продвинутое, например, проверка длины, типов или регулярных выражений.Я делаю такую проверку "вручную" для каждого поля.У вас есть какой-то лучший подход?
У вас есть исправление для этой проблемы в Joi validate?
ИЛИ, может быть, вы знаете лучший пакет npm для этой задачи?