Как проверить объект, чтобы разрешить использование только белых ключей с помощью схемы?

Чтобы пользователь не мог отправлять вредоносные подобъекты в объект, я пытаюсь проверить его ввод с помощью 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, title и modules под ключом 1 и ключом 2.

Если пользователь отправит ключ 3, я хочу, чтобы проверка схемы прошла неудачно.

Если пользователь заполняет "firstName" под ключом 1 или ключом 2, что недопустимо, я также хочу, чтобы его запрос не выполнялся.

Я знаю, что Джой предлагает "обязательный" метод, и все, что не считается "обязательным", является необязательным.

Однако та же схема, которую я прикрепил выше, дает сбой, когда пользователь, например, не предоставляет "модули". Что необязательно, не обязательно.

Я пытаюсь решить проблему с помощью валидатора Joi или использовать другой модуль npm.

Примечание: на этот раз я просто хочу проверить ключи объекта на белом фоне, а не что-то продвинутое, например, проверку длины, типов или регулярных выражений. Я делаю такую ​​проверку "вручную" для каждого поля. Есть ли у вас лучший подход?

У вас есть решение для этой проблемы в Joi проверить?

Или, может быть, вы знаете лучше пакет npm для этой задачи?

0 ответов

Другие вопросы по тегам