JOI-验证对象键和值?

197*_*977 3 joi

如何使用Joi验证具有零个或多个键/值对的替换字段?并且每个键是一个字符串,并且每个值是一个字符串,数字或布尔值?

"substitutions": {
    "somekey": "someval",
    "somekey": "someval"
  }
Run Code Online (Sandbox Code Playgroud)

bla*_*ade 7

您可以使用Joi.object().pattern()

{
    substitutions: Joi.object().pattern(/.*/, [Joi.string(), Joi.number(), Joi.boolean()])
}
Run Code Online (Sandbox Code Playgroud)

这将适用于有效负载,例如:

{
    substitutions: {
        blah   : 'string',
        test123: 123,
        example: true,
    }
}
Run Code Online (Sandbox Code Playgroud)


Cut*_*ert -2

要允许一个键匹配多​​种类型,您需要使用Joi.alternatives()

您的架构将如下所示:

const schema = {
    substitutions: Joi.object().keys({
        somekey: Joi.alternatives().try(Joi.string(), Joi.number(), Joi.boolean())
    })
};
Run Code Online (Sandbox Code Playgroud)

  • 我事先并不知道该密钥将被命名为“somekey” (3认同)