Coder Social home page Coder Social logo

validate's Introduction

validate

Validate object properties in javascript.

npm version Build Status

Example

var schema = require('validate');
var user = schema({
  name: {
    type: 'string',
    required: true,
    message: 'Name is required.'
  },
  email: {
    type: 'string',
    required: true,
    match: /+\@.+\..+/,
    message: 'Email must be valid.'
  },
  address: {
    street: {
      type: 'string',
      required: true,
      message: 'Street is required.'
    },
    city: {
      type: 'string',
      required: true,
      message: 'City is required.'
    }
  }
});

var errors = user.validate(obj);

Each error has a .path, describing the full path of the property that failed validation, and a .message property.

errors[0].path //=> 'address.street'
errors[0].message //=> 'Street is required.'

You can also add paths to a schema by using the chainable API

user
  .path('username')
  .type('string')
  .required()
  .match(/[a-z]{2,16}/)
  .message('Username must be 2-16 chars.');

user
  .path('address.zip')
  .type('string')
  .required()
  .match(/[0-9]+/)
  .message('Zip is required.');

Typecasting

Values can be automatically typecasted before validation. To enable typecasting, pass an options object to the schema constructor with typecast set to true.

var user = schema({ name: 'string', age: 'number' }, { typecast: true });

You can override this setting by passing options to .validate()

user.validate(obj, { typecast: false });

Property stripping

By default, all values not defined in the schema will be stripped from the object. Set .strip = false on the options object to disable this behavior.

API

schema(paths, [opts])

Creates a new Schema with the given paths.

Schema#path(path, [rules])

Add path to schema with optional rules. Returns a Property.

Schema#validate(obj, [opts])

Validate given object. Returns an array of errors.

Schema#assert(obj, [opts])

Validate given object and throw if the validation fails.

Property#use(fn, [msg])

Use the given validation function with and optional error message. fn should accept a value and return true if the value is considered valid.

Property#type(name, [msg])

Property should be of type name.

Property#required(bool, [msg])

Property is required.

Property#match(regexp, [msg])

Proprety should match given regexp.

Property#each(fn, [msg])

Validate each value in array against given function fn.

Property#message(msg)

Set default error message for property.

Licence

MIT

validate's People

Contributors

eivindfjeldstad avatar raynos avatar sajadbahar avatar

Watchers

Zen Li avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.