乔伊 - not.exist()?

Joi - not.exist()?

我正在尝试使用 Joi 进行验证,但我遇到了一个我无法实现的场景。我有一个对象。在某些情况下,该对象将有一个 id(编辑),而在其他情况下它不会(创建)。

我想验证一下,如果 "id" 不存在,其他字段应该很少。

到目前为止,我唯一可行的解​​决方案是当 id 为 null 且根本不丢失时。有没有办法匹配不存在的密钥,或者我应该将其更改为 null(有点老套)。

joi.object().keys({
  id: joi
    .number()
    .min(0)
    .allow(null),
  someOtherField1: joi.when("id", { is: null, then: joi.required() })
});

提前致谢!

如果您准备接受 null 作为 id 并希望对其执行条件,我建议将 id 字段默认为 null .这样你就可以从有效负载中省略它并仍然使用 Joi.when().

查询它

例如:

Joi.object().keys({
    id: Joi.number().min(0).allow(null).default(null),
    someOtherField1: Joi.string().when('id', { is: null, then: Joi.required() })
});

同时传递空对象 {} 和具有 null id{ "id": null } 的对象将导致:

ValidationError: child "someOtherField1" fails because ["someOtherField1" is required]

Undefined 是 Joi 的空值。使用 "not" 而不是 "is"

示例:{ not: Joi.exist(), then: Joi.required() }