验证子PARAMS依赖于与淳佳和哈皮父PARAMS(validating sub-params de

2019-09-29 23:54发布

我怎样才能实现验证了类似下面的逻辑查询参数:

if (type is 'image') {
    subtype is Joi.string().valid('png', 'jpg')
else if (type is 'publication') {
    subtype is Joi.string().valid('newspaper', 'book')

让无论是

server/?type=image&subtype=png

要么

server/?type=publication&subtype=book

但不能同时imagepublication在同一时间?

更新:我尝试下面的代码,但没有运气

type: Joi
    .string()
    .valid('image', 'publication', 'dataset')
    .optional(),
 subtype: Joi
    .when('type', 
         {
             is: 'image', 
             then: Joi
                 .string()
                 .valid('png', 'jpg')
                 .optional()
         },
         {
             is: 'publication', 
             then: Joi
                 .string()
                 .valid('newspaper', 'book')
                 .optional()
         }
      )
      .optional()
      .description('subtype based on the file_type')

Answer 1:

你接近与使用.when() 而不是试图把所有的排列在一个单一的.when()调用,可以作为函数从普通降临它们连起来any结构。 不幸的是,文件并没有使这个特别清楚。

{
    type: Joi.string()
             .valid('image', 'publication', 'dataset')
             .optional(),

    subtype: Joi.string()
                .optional()
                .when('type', {is: 'image',       then: Joi.valid('png', 'jpg')})
                .when('type', {is: 'publication', then: Joi.valid('newspaper', 'book')})
                .description('subtype based on the file_type')
}


文章来源: validating sub-params dependent on parent params with Joi and Hapi
标签: hapijs joi