Introduction
In this post, I will show how to validate your json schema validation across veriety of use-cases.
1. You want to allow only one of three params to be REQUIRED parameter
Example, you are having 5 fields. And, for three fields you want either of them to be present. Note: Success criteria is to have only one of these three fields, not 2 not 3.
Example schema validation with Joi:
const validationJoi = Joi.object({
field1: Joi.string(),
field2: Joi.string(),
field3: Joi.string(),
field4: Joi.string(),
field5: Joi.string(),
}).xor('field1', 'field2', 'field3')
const obj = {
field1: "value1",
field4: "value4",
};
const isValid = Joi.validate(obj, validationJoi);
//true
const obj2 = {
field4: "value4",
};
const isValid2 = Joi.validate(obj, validationJoi);
//falseNote the xor above.
Note, this validation can also be used in mongoose schema validations.
const Joi = require('joi');
const mySchema = mongoose.Schema({
name: String,
country: String,
email: String,
created: { type: Date, default: Date.now }
});
mySchema.methods.schemaValidate = function(obj) {
const schema = {
name: Joi.types.String().min(6).max(30).required(),
country: Joi.types.String().required(),
email: Joi.types.String().email().required()
created: Joi.types.Date(),
}
return Joi.validate(obj, schema);
}
module.exports = mongoose.model('User', mySchema);And, in some service code you can call this method schemaValidate on MySchema object.













