Added custom schema validation formats

master
Mark Moffat 2019-11-16 12:52:54 +10:30
parent 62dacd3867
commit fd0bbb83c9
4 changed files with 19 additions and 5 deletions

View File

@ -10,10 +10,22 @@ const addSchemas = () => {
const fileData = JSON.parse(fs.readFileSync(file, 'utf-8'));
ajv.addSchema(fileData, path.basename(file, '.json'));
});
// Email format
const emailRegex = /^([\w-.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([\w-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$/;
ajv.addFormat('emailAddress', emailRegex);
// Amount format
const amountRegex = /^[1-9]\d*(\.\d+)?$/;
ajv.addFormat('amount', amountRegex);
};
const validateJson = (schema, json) => {
return ajv.validate(schema, json);
const result = ajv.validate(schema, json);
return{
result,
errors: ajv.errors
};
};
module.exports = {

View File

@ -1,10 +1,10 @@
{
"$id": "newCustomer",
"$id": "customer",
"type": "object",
"properties": {
"email": {
"type": "string",
"format": "email"
"format": "emailAddress"
},
"firstName": {
"type": "string"

View File

@ -12,7 +12,8 @@
"type": "string"
},
"productPrice": {
"type": "number"
"type": "number",
"format": "amount"
},
"productDescription": {
"type": "string"

View File

@ -9,7 +9,8 @@
"type": "string"
},
"productPrice": {
"type": "number"
"type": "number",
"format": "amount"
},
"productDescription": {
"type": "string"