Javascript 仅当父对象存在时才验证嵌套对象

Javascript 仅当父对象存在时才验证嵌套对象,javascript,node.js,joi,Javascript,Node.js,Joi,我有一个请求主体,看起来像这样: { "folder": { "value": "testFolder", "operator": "=" }, "name": { "value": "5456", "operator": "contains" } } 但请求的主体不是必需的。如果存在主体,如何验证每个对象是否存在值和运算符 编辑: 忘了提到我想使用Joi验证器。我遇到的问题是这样的: body: Joi.object().keys({ $key: Joi.object

我有一个请求主体,看起来像这样:

{
    "folder": { "value": "testFolder", "operator": "=" },
    "name": { "value": "5456", "operator": "contains" }
}
但请求的主体不是必需的。如果存在
主体
,如何验证每个对象是否存在
运算符

编辑: 忘了提到我想使用
Joi验证器
。我遇到的问题是这样的:

body: Joi.object().keys({
    $key: Joi.object().keys({ <-- since the $key placeholder is unique
        value: Joi.string().required(),
        operator: Joi.string().required()
    })
})
body:Joi.object().keys({
$key:Joi.object().keys({检查主体是否存在(对象,是否为空),如果存在,则开始循环检查其对象(使用比ifs更干净的函数),如果不匹配,则返回false,否则返回true

例如:


在服务器条目中:

if (body && !ifHaveItemValidateBody(body) {
    /* do something */
}
检查主体是否存在(对象,是否为空),如果存在,则开始循环检查其对象(使用比ifs更干净的函数),如果不匹配,则返回false,否则返回true

例如:


在服务器条目中:

if (body && !ifHaveItemValidateBody(body) {
    /* do something */
}

在对文档和论坛进行进一步挖掘后,此解决方案对我很有用。可能对某人有帮助:

body: Joi.object().pattern(
  Joi.string(),
  Joi.object().keys({
    value: Joi.string().required(),
    operator: Joi.string().required()
  })
)

在对文档和论坛进行进一步挖掘后,此解决方案对我很有用。可能对某人有帮助:

body: Joi.object().pattern(
  Joi.string(),
  Joi.object().keys({
    value: Joi.string().required(),
    operator: Joi.string().required()
  })
)

如果您使用的是express,则可以使用express validator。如果您使用的是express,则可以使用express validator。