【问题标题】:Joi validation on payload where value name has a hyphen值名称带有连字符的有效负载上的 Joi 验证
【发布时间】:2020-05-25 14:08:09
【问题描述】:

正如标题中所说,我无法让 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”之后。是一个意外的令牌?

【问题讨论】:

  • 试试 searchType: .["search-type"]
  • 谢谢,但仍然说“joi”。是方括号后的意外标记
  • 只需使用“搜索类型”而不是搜索类型。我在hapi.dev/family/joi/tester 进行了测试

标签: node.js joi hapi


【解决方案1】:

使用

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-04-06
    • 2017-12-08
    • 2019-04-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-05
    相关资源
    最近更新 更多