var Ajv = require('ajv');
var ajv = Ajv();
var ajvFilter = Ajv({removeAdditional: true});
var schema = {
"type": "object",
"properties": {
"modes": {
"type": "array",
"minItems": 1,
"additionalItems": false,
"items": {
"type": "object",
"properties": {
"mode": {
"enum": [
"ftp",
"email"
]
},
"account": {
"type": "string",
"pattern": "^[a-f|0-9]{8}quot;
},
"mailingList": {
"type": "string",
"pattern": "^[a-f|0-9]{8}quot;
}
},
"additionalProperties": false,
"oneOf": [
{ "mode": { "enum": [ "ftp" ] }, "required": [ "mode", "account" ] },
{ "mode": { "enum": [ "email" ] }, "required": [ "mode", "mailingList" ] }
]
}
}
},
"required": [
"modes"
],
"additionalProperties": false
};
const data = {
"modes": [
{
"mode": "ftp",
"account": "e69b3f54"
},
{
"mode": "email",
"mailingList": "c3d12752"
}
]
};
ajv.validate(schema, data);
console.log(ajv.errors);
ajvFilter.validate(schema, data);
console.log(ajvFilter.errors);
console.log(data);