【问题标题】:hapijs joi validation , just validate one field and to allow any fieldhapijs joi 验证,只验证一个字段并允许任何字段
【发布时间】:2017-01-22 17:29:16
【问题描述】:

我想验证一个字段并允许另一个字段不进行验证;例如只是为了验证:“名字”字段。在我的代码中,当我评论“有效负载”时,hapi 允许我记录任何字段,当我取消注释“有效负载”时,hapijs 不允许我记录任何字段,但我只想通过示例验证“名字”是否为“字符串”并且让其余字段允许。我打算让变量字段符合数据库配置,所以我将只验证一些固定字段并让保存在前端控制的另一个变量字段,而不是在后端

  config: {
      validate: {
         /* payload: {
            firstname: Joi.string(),
            lastname: Joi.string()
            ...anothers fields...

          }*/
      }
  }

更新: 感谢 Robert K. Bell,我调整的解决方案是添加“验证”:

  config: {
      validate: {
         options: {
            allowUnknown: true
          },
          payload: {
            firstname: Joi.string()
          }
      }
  }

【问题讨论】:

    标签: hapijs joi


    【解决方案1】:

    您可能正在寻找.unknown() method:

    object.unknown([allow])

    仅覆盖当前对象范围内未知键的处理(不适用于子对象),其中:

    • allow - 如果false,则不允许使用未知键,否则将忽略未知键。

    js const schema = Joi.object({ a: Joi.any() }).unknown();

    【讨论】:

    • 谢谢,我将根据我的配置编辑我的答案;我必须使用“选项”,但它是相同的 unknown() 方法
    【解决方案2】:
      config: {
          validate: {
            payload: Joi.object({
                'firstname': Joi.string(),
            }).options({ allowUnknown: true })
          }
      }
    

    直接使用 Joi 对象验证有效负载,而不是在 validate 中添加验证字段。它接受 allowUnknown true 使用它只会验证 Joi 对象中提到的字段。

    【讨论】:

    • 您能补充说明吗?谢谢!
    猜你喜欢
    • 2019-05-01
    • 2011-04-29
    • 2020-09-06
    • 1970-01-01
    • 2019-04-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多