乔伊 - 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() }
我正在尝试使用 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() }