node package manager


veto Build Status

middleware to validate parameters


npm install veto


var veto = require('veto');
app.get('/', function(req, res, next) {
    // assert that the email parameter is an email 
    // will throw a veto.ValidationError if it isn't 
    var email = req.assert('email').isEmail().get();
    // asserts can be chained 
    var foo = req.assert('foo').isAlpha().len(4, 10).get();
    // and also accept custom messages 
    var baz = req.assert('baz', 'must be a number').isNumeric().get();
    // we can be sure email is of email format 
// an express error handler will receive the thrown error 
app.use(function(err, req, res, next) {
    // err.statusCode will be 400 
    // err instanceOf veto.ValidationError 

things you can veto

  • is(regex)
  • not(regex)
  • isEmail()
  • isUrl()
  • isIP()
  • isAlpha()
  • isAlphanumeric()
  • isNumeric()
  • isInt()
  • isDecimal()
  • notNull()
  • isNull()
  • notEmpty()
  • equals(equals)
  • contains(str)
  • notContains(str)
  • len(min [, max])
  • isUUID(version) //Version can be 3 or 4 or empty
  • isIn(arr | str)
  • notIn(arr | str)
  • max(val)
  • min(val)
  • isArray()

adding your own

You can add your own things to veto by providing an object to the veto(). Each ownProperty of the object which is a function will be added.

this in the function will refer to the parameter to assert.

To indicate an error, return a string. Otherwise don't return anything.

var additional = {
    isFooBar: function() {
        if (this !== 'foobar') {
            return 'should equal foobar';
app.get('/', function(req, res) {
    var foo = req.assert('foo').isFooBar().get();

capturing errors

Veto asserts throw. This means that the error handler middleware will be called as soon as a veto fails. You can easily handle the error there and send any relevant response back to the user.

app.get('/', function(req, res) {
    var foo = req.assert('foo').isEmail().get();
// error handler for failed assertions 
app.use(function(err, req, res, next) {
    // veto errors are of instance veto.ValidationError 
    // err.statusCode is 400 
    // err.param is the name of the parameter that failed 
    // err.value is the user specified parameter value 
    // err.message is an error message 
    // you can check specifically for veto errors with 
    err instanceof veto.ValidationError