Как проверить объект, чтобы разрешить использование только белых ключей с помощью схемы? - PullRequest
0 голосов
/ 07 октября 2018

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

...