16

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

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

          }*/
      }
  }

更新:感谢罗伯特·K·贝尔,我调整了解决方案是添加“验证”:

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

2 回答 2

18

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

object.unknown([allow])

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

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

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

于 2016-09-15T02:47:33.477 回答
7
  config: {
      validate: {
        payload: Joi.object({
            'firstname': Joi.string(),
        }).options({ allowUnknown: true })
      }
  }

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

于 2018-12-11T16:16:54.407 回答