试试这个.它基本上接受对象中的任何键,campaign
并且值必须进行验证Joi.date().iso()
campaign: Joi.object().pattern(/^/, Joi.date().iso())
然而,这将匹配任何键.你可以通过填充正则表达式来限制它.例如,只有2到25个字符之间的单词字符
campaign: Joi.object().pattern(/\w{2,25}/, Joi.date().iso())
UPDATE
关于Joi文档中的示例,我没有测试过,但这是我的解释.我可以理解,这不是他们可以给出的最简单的例子......
const schema = Joi.object({ arg: Joi.string().valid('firstname', 'lastname', 'title', 'company', 'jobtitle'), value: Joi.string(), }).pattern(/firstname|lastname/, Joi.string().min(2));
要验证的对象必须包含两个属性arg
,value
其中arg
的值可以是其中之一,'firstname', 'lastname', 'title', 'company', 'jobtitle'
而且value
只是一个字符串.
{ arg: 'firstname', value: 'john' } { arg: 'lastname', value: 'smith' } { arg: 'jobtitle', value: 'brewer' }
但是,它还允许对象具有属性,firstname
并且lastname
其值均为包含两个以上字符的字符串.因此,上述示例可以压缩为单个有效对象.
{ firstname: 'john', lastname: 'smith', arg: 'jobtitle', value: 'brewer' }