Check if objects are well constructed according to a map
npm install bacterybash
npm install --save bactery
`
$3
`javascript
var bactery = require('bactery');
var requiredProperties = ['id', 'label', 'description'];
var myObjectToControl = {
id : 1,
label : 'bla'
};
var res = bactery.check(requiredProperties, myObjectToControl);
res.isConform => false
res.message => 'The following key(s) is/are missing : description'
res.errors => ['description']
`
$3
bactery.check(map, object)
- {Array} map
- {Object/Array} object : if the object is an array, the corresponding map is applicated over the collection of objects
Returns an object :
+ {boolean} isConform, the result of the control
+ {String} message, an error message
+ {Array} errors, an array of the missing keys
$3
This section describes how to write the map parameter.
#### Object in object
Pay attention :
+ the * character represents the key to access the sub object
+ a simple * means that the property is required. It can not be null
+ a double ** means that the property is facultative.
`javascript
var objectToControl = {
id : 1,
label : 'Loar',
description : {
short : 'bla',
detailed : 'blabla'
}
};
// All the properties are required
var requiredProperties = ['id', 'label', ['*description', 'short', 'detailed']];
// .description is facultative
var requiredProperties = ['id', 'label', ['**description', 'short', 'detailed']];
`
#### Array in object
Pay attention :
+ the * character represents the key to access the sub array.
+ a simple * means that the property is required. It can not be null
+ a double ** means that the property is facultative.
`javascript
var objectToControl = {
id : 1,
section : 'novel',
books: [
{
id: 2513,
label: 'Loar'
}, {
id: 2514
label: 'Incognito'
}
]
};
// All the properties are required
var requiredProperties = ['id', ['*books', 'id', 'label']];
// .books is facultative
var requiredProperties = ['id', ['**books', 'id', 'label']];
`
#### Deep objects/arrays
`javascript
var objectToControl = {
id: 1,
section : 'novel',
books: [
{
id: 2513,
label: 'Loar',
author: {
name: 'Loïc Henry'
}
}, {
id: 2544,
label: 'Incognito'
author: {
name: 'David EAGLEMAN'
}
}
]
};
var requiredProperties = ['id', ['books', 'id', 'label', ['author', 'id', 'name']]];
`
#### Array of objects
`javascript
var objectsToControl = [
{
id : 1,
label : 'bla'
},
{
id : 2,
label : 'blo'
}
];
var requiredProperties = ['id', 'label'];
``