我想验证一个字段“familymemberCount”,它应该大于等于其他字段。
我尝试了下面的代码,但这不允许将“+”运算符与 Ref 一起使用。
我们如何用其他值的总和进行验证?
export const familyMemberRulesSchema = Joi.object({
relationMembers: Joi.object({
motherCount: Joi.number().integer().min(0).max(5).optional(),
fatherCount: Joi.number().integer().min(0).max(5).optional(),
childrenCount: Joi.number().integer().min(0).max(5).optional()
}),
familyMemberCount: Joi.number().integer().min(0).max(15).greater(
Joi.ref('relationMembers.motherCount') +
Joi.ref('relationMembers.fatherCount') +
Joi.ref('relationMembers.childrenCount')
)
});
The joi.ref
这样行不通。您需要编写一个自定义函数来获取所有值并以这种方式求和。基本上用adjust
功能,同时使用Joi.ref
。像这样的东西。
const Joi = require("@hapi/joi");
const familyMemberRulesSchema = Joi.object({
relationMembers: Joi.object({
motherCount: Joi.number().integer().min(0).max(5).optional(),
fatherCount: Joi.number().integer().min(0).max(5).optional(),
childrenCount: Joi.number().integer().min(0).max(5).optional()
}),
familyMemberCount: Joi.number().integer().min(0).max(15).greater(
Joi.ref('relationMembers', {"adjust": relationMembers => {
return relationMembers.motherCount + relationMembers.fatherCount + relationMembers.childrenCount;
}})
)
});
const result = familyMemberRulesSchema.validate({"relationMembers": {"motherCount": 2, "fatherCount": 1, "childrenCount": 2}, "familyMemberCount": 6});
console.log(result);
const error = familyMemberRulesSchema.validate({"relationMembers": {"motherCount": 4, "fatherCount": 1, "childrenCount": 2}, "familyMemberCount": 6});
console.log(error);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)