如何使用架构验证对象以仅允许带有白色标签的键?

时间:2018-10-07 19:22:04

标签: javascript validation schema joi

为了防止用户将恶意的子对象发送到对象中, 我正在尝试使用Joi validate和schema来验证他的输入。

// 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,我希望架构测试失败。

如果用户在键1或键2下填写“名字”,这是不可接受的, 我也希望他的查询失败。

我知道Joi提供了“ required”方法,并且所有不被引用的方法 “必需”是可选的。

但是,例如,当用户不提供“模块”时,我上面附加的相同模式将失败。 这是可选的,不是必需的。

我正在尝试使用Joi验证程序解决问题,或者可能使用另一个npm模块。

注意:这一次,我只想测试对象中的whitelabel键,而不是高级的东西, 例如长度,类型或正则表达式验证。 我正在针对每个领域“手动”进行这种验证。 您有更好的方法吗?

您可以在Joi validate中解决此问题吗?

或者您可能对此任务了解更好的npm软件包?

0 个答案:

没有答案