我有一个看起来像这样的请求正文:
{
"folder": { "value": "testFolder", "operator": "=" },
"name": { "value": "5456", "operator": "contains" }
}
虽然不是必需的内容。如果存在value
,如何验证每个对象都存在operator
和body
?
修改:
忘记提及我要使用Joi Validator
。我遇到的问题是这样的:
body: Joi.object().keys({
$key: Joi.object().keys({ <-- since the $key placeholder is unique
value: Joi.string().required(),
operator: Joi.string().required()
})
})
在那里我应该怎么用?
答案 0 :(得分:0)
检查body是否存在(对象,是否为空),如果存在,则开始循环检查其对象(使用函数,比ifs更干净),如果不匹配,则返回false,否则返回true
例如:
const ifHaveItemValidateBody = function(body) {
if (!body) return false;
for (let k in body) {
const item = body[k];
if ((!(item && item.value && item.operator))) {
return false;
}
}
return true;
};
在您的服务器条目中:
if (body && !ifHaveItemValidateBody(body) {
/* do something */
}
答案 1 :(得分:0)
在文档和论坛中进行了进一步的研究后,该解决方案对我有效。对某人可能会有帮助:
body: Joi.object().pattern(
Joi.string(),
Joi.object().keys({
value: Joi.string().required(),
operator: Joi.string().required()
})
)