为了防止用户将恶意的子对象发送到对象中, 我正在尝试使用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软件包?