This package allows you to add validation to model definition. Addressing the absence of this implementation as seen in the Validations session of Model definition JSON file.
To avoid conflict with future implementations by the Loopback team, I proposed a new and simple structure in defining model properties.
This package also defines the possibility of using data filters that enable cleaner data.
Reference mixins in server/model-config.js
{
"_meta": {
...
"mixins": [
...
"../node_modules/loopback-model-validator/mixins"
]
}
}
{
"name": "note",
"base": "PersistedModel",
...
"mixins": {
"Validators" : true,
"Filters" : true
}
"properties": {
...
},
...
}
In defining the model, use:
"properties": {
"initials": {
"type": "string",
"validators": {
"length": 3
}
}
}
More examples of validations.
Name | Value | Description | Example |
---|---|---|---|
length / is | number | Length fixed of the string (Validatable.validatesLengthOf) | {"length": 3} or {"is": 3} |
min | number | Length min of the string (Validatable.validatesLengthOf) | {"min": 3} |
max | number | Length max of the string (Validatable.validatesLengthOf) | {"max": 3} |
pattern | object | Format of the string (Validatable.validatesFormatOf) | {"pattern": {"exp": "/\w+/", "flags": "i"}} |
boolean | Valid email | {"email": true} | |
urlIp | boolean | Valid URL or IP | {"urlIp": true} |
cpf | boolean | Valid CPF (Brazilian document for people) | {"cpf": true} |
cnpj | boolean | Valid CNPJ (Brazilian document for companies) | {"cnpj": true} |
unique | boolean | Unique value (Validatable.validatesUniquenessOf) | {"unique": true} |
You can use loopback-datasource-juggler native validation methods, where the propertyName parameter will be the property and the options object the value. Example:
// Validatable.validatesLengthOf
"properties": {
"initials": {
"type": "string",
"validators": {
"lengthOf": {
"is": 3,
"allowBlank": true,
"allowNull": true,
"message": "length is wrong"
}
}
}
}
In defining the model, use:
"properties": {
"initials": {
"type": "string",
"filters": {
"upper": true
}
}
}
More examples of filters.
Name | Value | Description | Example |
---|---|---|---|
upper | boolean | Converts string, as a whole, to upper case just like String#toUpperCase | {"upper": true} |
lower | boolean | Converts string, as a whole, to lower case just like String#toLowerCase | {"lower": true} |
trim | boolean | Removes leading and trailing whitespace or specified characters from string | {"trim": true} |
replace | object | Replaces matches for exp in string with replacement | {"replace": {"pattern": {"type": "regex", "exp": "[^\\d]", "flags": "g"}, "replacement": ""} |