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);