带有未知字符串字符串的字典,用于键和字符串数组作为Joi和Node中的值

时间:2018-07-11 02:51:39

标签: javascript joi

我正在尝试为我的Node服务之一验证包装器。 JSON对象具有一个Dictionary,该Dictionary的键没有标准值,并且该值是一个或多个字符串的数组。这是我的JSON对象的示例?

{
     "IncomingId" : "Id1",
     "LoginId": "Id2",
     "FirstName" : "Name1",
     "MiddleName" : "Name2",
     "LastName" : "Name3",
     "Questions" : {
       "Who are you?" : [
         "I am me."
       ]
     }
}

IncomingId 是必需的,而他们需要提供:

  1. 名/中间名/姓氏字段,或者

  2. 只能自己提供 LoginId 字段。

问题字段也是必填字段。不确定如何对这些字段执行“或”操作,还请检查“字典”是否与正确的字段匹配。这是我到目前为止所写的,但没有用:

securityChallenge: {
    body: {
        IncomingId: Joi.string().required(),
        LoginId: Joi.string(),
        FirstName: Joi.string(),
        MiddleName: Joi.string(),
        LastName: Joi.string(),
        Questions: Joi.object({
            arg: Joi.string().min(1).required(),
            value: Joi.array().items(Joi.string()).min(1).required()
        }).required()
    }
}

1 个答案:

答案 0 :(得分:0)

尝试一下:

com.sun.faces.enableDistributable

对于const baseSchema = Joi.object({ IncomingId: Joi.string().required(), Questions: Joi.object().pattern(/^/, Joi.array().items(Joi.string()).min(1)).required().min(1), }) const schema = Joi.alternatives().try( baseSchema.keys({ LoginId: Joi.string().required() }), baseSchema.keys({ FirstName: Joi.string().required(), MiddleName: Joi.string(), LastName: Joi.string().required(), }), ) 键,您正在寻找Questions(请参阅https://github.com/hapijs/joi/blob/master/API.md#objectpatternpattern-schema)。

要指定LoginId或名字/中间名/姓氏,可以使用.pattern(...)(请参阅https://github.com/hapijs/joi/blob/master/API.md#alternatives---inherits-from-any