hapijs joi验证,只需验证一个字段并允许任何字段

时间:2016-09-14 19:38:09

标签: hapijs joi

我想验证一个字段并允许其他字段未经验证;通过示例来验证:“firstname”字段。在我的代码中,当我评论'payload'时,hapi允许我记录任何字段,当我取消注释'payload'时,hapijs不允许我记录任何字段,但我只想通过示例'firstname'验证为'字符串'并且让剩下的字段允许。我计划让变量字段符合数据库配置,所以我只是验证一些固定字段并让我们保存前端控制的另一个变量字段,而不是后端

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

          }*/
      }
  }

更新: 感谢Robert K. Bell,我已经调整了解决方案是添加'验证':

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

2 个答案:

答案 0 :(得分:3)

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

object.unknown([allow])

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

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

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

答案 1 :(得分:1)

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

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