loopback-model-validator
v1.0.1
Published
Extra validators and filters for loopback models
Downloads
4
Maintainers
Readme
Loopback model validator
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.
Installation
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": {
...
},
...
}
Validators
In defining the model, use:
"properties": {
"initials": {
"type": "string",
"validators": {
"length": 3
}
}
}
More examples of validations.
Validations supported
| 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"}} | | email | 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} |
Loopback validations
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"
}
}
}
}
Filters
In defining the model, use:
"properties": {
"initials": {
"type": "string",
"filters": {
"upper": true
}
}
}
More examples of filters.
Filters supported
| 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": ""} |