1.0.1 • Published 5 years ago

loopback-model-validator v1.0.1

Weekly downloads
4
License
MIT
Repository
github
Last release
5 years ago

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"
    ]
  }
}

Enable a model with 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

NameValueDescriptionExample
length / isnumberLength fixed of the string (Validatable.validatesLengthOf){"length": 3} or {"is": 3}
minnumberLength min of the string (Validatable.validatesLengthOf){"min": 3}
maxnumberLength max of the string (Validatable.validatesLengthOf){"max": 3}
patternobjectFormat of the string (Validatable.validatesFormatOf){"pattern": {"exp": "/\w+/", "flags": "i"}}
emailbooleanValid email{"email": true}
urlIpbooleanValid URL or IP{"urlIp": true}
cpfbooleanValid CPF (Brazilian document for people){"cpf": true}
cnpjbooleanValid CNPJ (Brazilian document for companies){"cnpj": true}
uniquebooleanUnique 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

NameValueDescriptionExample
upperbooleanConverts string, as a whole, to upper case just like String#toUpperCase{"upper": true}
lowerbooleanConverts string, as a whole, to lower case just like String#toLowerCase{"lower": true}
trimbooleanRemoves leading and trailing whitespace or specified characters from string{"trim": true}
replaceobjectReplaces matches for exp in string with replacement{"replace": {"pattern": {"type": "regex", "exp": "^\d", "flags": "g"}, "replacement": ""}