首页 > 解决方案 > 值名称带有连字符的有效负载上的 Joi 验证

问题描述

正如标题中所说,我无法让 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()
      }
    }
  }

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

 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”之后。是一个意外的令牌?

标签: node.jsjoihapi

解决方案


采用

 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因为-将被解释为减法运算符。


推荐阅读