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

sta*_*ave 6 hapijs joi

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

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

          }*/
      }
  }
Run Code Online (Sandbox Code Playgroud)

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

  config: {
      validate: {
         options: {
            allowUnknown: true
          },
          payload: {
            firstname: Joi.string()
          }
      }
  }
Run Code Online (Sandbox Code Playgroud)

Rob*_*ell 13

您可能正在寻找以下.unknown()方法:

object.unknown([allow])

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

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

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


Anu*_*ari 5

  config: {
      validate: {
        payload: Joi.object({
            'firstname': Joi.string(),
        }).options({ allowUnknown: true })
      }
  }
Run Code Online (Sandbox Code Playgroud)

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