对值名称带有连字符的有效载荷进行 Joi 验证

Joi validation on payload where value name has a hyphen

正如标题中所说,我无法让 joi 验证对我的有效载荷中的一个值起作用,该值的名称中带有连字符。该值称为 'search-type'。我的验证看起来像这样

  options: {
    validate: {
      payload: joi.object({
        value1: joi.string().required(),
        value2: joi.string().required(),
        search-type: joi.string().required()
      }),
      failAction: (request, h, err) => {
        return h.redirect('/search').takeover()
      }
    }
  }

我试过像这样把名字放在方括号里

 options: {
   validate: {
     payload: joi.object({
       value1: joi.string().required(),
       value2: joi.string().required(),
       searchType:['search-type'] joi.string().required()
     }),
     failAction: (request, h, err) => {
       return h.redirect('/search').takeover()
     }
   }
 }

但是 'joi.' 在 linting 中标记并说 'joi.' 是一个意外的标记?

使用

 options: {
   validate: {
     payload: joi.object({
       value1: joi.string().required(),
       value2: joi.string().required(),
       'search-type': joi.string().required()
     }),
     failAction: (request, h, err) => {
       return h.redirect('/search').takeover()
     }
   }
 }

因为这是 Joi 我猜你不需要在其他任何地方访问那个 属性,但是你会用 options.validate['search-type'] 而不是 options.validate.search-type 作为 - 将被解释为减法运算符。