// OK
console.assert(validate({remarks: 'foo'}),
JSON.stringify(validate.errors, null, 2));
// ERR: `remarks` is too long
console.assert(validate({remarks: 'foobarbazbat'}),
JSON.stringify(validate.errors, null, 2));
// OK: schema doesn't say `parent` can't be empty
console.assert(validate({remarks: 'foo', parent: []}),
JSON.stringify(validate.errors, null, 2));
// OK: schema doesn't say `parent` elements MUST have a `comment` property
console.assert(validate({remarks: 'foo', parent: [{}]}),
JSON.stringify(validate.errors, null, 2));
// OK
console.assert(validate({remarks: 'foo', parent: [{comment: 'foo'}]}),
JSON.stringify(validate.errors, null, 2));
// ERR: `comment` is too long
console.assert(validate({remarks: 'foo', parent: [{comment: 'foobarbazbat'}]}),
JSON.stringify(validate.errors, null, 2));
<script src="https://cdnjs.cloudflare.com/ajax/libs/ajv/6.10.2/ajv.min.js"></script>
<script>
const ajv = new Ajv();
ajv.addSchema({
$id: 'defs.json',
definitions: {
userInput: {
type: 'string',
maxLength: 10
}
}
});
const validate = ajv.compile({
$id: 'main.json',
type: 'object',
properties: {
remarks: {$ref: 'defs.json#/definitions/userInput'},
parent: {
type: 'array',
items: {
type: 'object',
properties: {
comment: {$ref: 'defs.json#/definitions/userInput'}
}
}
}
}
});
</script>