Module @sequelize/validator.js

Sequelize logo

Sequelize

This library contains model attribute validators built on top of validator.js. Read more about model validation in the Sequelize documentation.

Installation

Using npm:

npm install @sequelize/validator.js

Or using yarn:

yarn add @sequelize/validator.js

Usage

⚠️ As indicated in the validator.js documentation, the library validates and sanitizes strings only.

To add validation to your model, decorate your model attributes with the decorators exported by this library.

import { Model, DataTypes } from '@sequelize/core';
import { Attribute, NotNull } from '@sequelize/core/decorators-legacy';
import { IsEmail } from '@sequelize/validator.js';

class User extends Model {
@Attribute(DataTypes.STRING)
@NotNull
@IsEmail
declare email: string;
}

List of validators

This package exports the following validators:

Contains

Checks if the string attribute contains the seed.

import { Model, DataTypes } from '@sequelize/core';
import { Attribute, NotNull } from '@sequelize/core/decorators-legacy';
import { Contains } from '@sequelize/validator.js';

class User extends Model {
@Attribute(DataTypes.STRING)
@NotNull
@Contains('foo')
declare username: string;
}

NotContains

Checks if the string attribute does not contain the seed.

import { Model, DataTypes } from '@sequelize/core';
import { Attribute, NotNull } from '@sequelize/core/decorators-legacy';
import { NotContains } from '@sequelize/validator.js';

class User extends Model {
@Attribute(DataTypes.STRING)
@NotNull
@NotContains('foo')
declare username: string;
}

Equals

Checks if the string attribute is exactly a value.

import { Model, DataTypes } from '@sequelize/core';
import { Attribute, NotNull } from '@sequelize/core/decorators-legacy';
import { Equals } from '@sequelize/validator.js';

class User extends Model {
@Attribute(DataTypes.STRING)
@NotNull
@Equals('foo')
declare username: string;
}

Is

Checks if the string attribute matches a regex.

import { Model, DataTypes } from '@sequelize/core';
import { Attribute, NotNull } from '@sequelize/core/decorators-legacy';
import { Is } from '@sequelize/validator.js';

class User extends Model {
@Attribute(DataTypes.STRING)
@NotNull
@Is(/foo/)
declare username: string;
}

Not

Checks if the string attribute does not match a regex.

import { Model, DataTypes } from '@sequelize/core';
import { Attribute, NotNull } from '@sequelize/core/decorators-legacy';
import { Not } from '@sequelize/validator.js';

class User extends Model {
@Attribute(DataTypes.STRING)
@NotNull
@Not(/foo/)
declare username: string;
}

IsAfter

Checks if the string attribute is a date that's after the specified date.

import { Model, DataTypes } from '@sequelize/core';
import { Attribute, NotNull } from '@sequelize/core/decorators-legacy';
import { IsAfter } from '@sequelize/validator.js';

class User extends Model {
@Attribute(DataTypes.STRING)
@NotNull
@IsAfter('2021-01-01')
declare createdAt: string;
}

IsBefore

Checks if the string attribute is a date that's before the specified date.

import { Model, DataTypes } from '@sequelize/core';
import { Attribute, NotNull } from '@sequelize/core/decorators-legacy';
import { IsBefore } from '@sequelize/validator.js';

class User extends Model {
@Attribute(DataTypes.STRING)
@NotNull
@IsBefore('2021-01-01')
declare createdAt: string;
}

IsAlpha

Checks if the string attribute contains only letters (a-zA-Z).

import { Model, DataTypes } from '@sequelize/core';
import { Attribute, NotNull } from '@sequelize/core/decorators-legacy';
import { IsAlpha } from '@sequelize/validator.js';

class User extends Model {
@Attribute(DataTypes.STRING)
@NotNull
@IsAlpha
declare username: string;
}

IsAlphanumeric

Checks if the string attribute contains only letters and numbers.

import { Model, DataTypes } from '@sequelize/core';
import { Attribute, NotNull } from '@sequelize/core/decorators-legacy';
import { IsAlphanumeric } from '@sequelize/validator.js';

class User extends Model {
@Attribute(DataTypes.STRING)
@NotNull
@IsAlphanumeric
declare username: string;
}

IsCreditCard

Checks if the string attribute is a credit card number.

import { Model, DataTypes } from '@sequelize/core';
import { Attribute, NotNull } from '@sequelize/core/decorators-legacy';
import { IsCreditCard } from '@sequelize/validator.js';

class User extends Model {
@Attribute(DataTypes.STRING)
@NotNull
@IsCreditCard
declare creditCard: string;
}

IsDate

Checks if the string attribute is a date.

import { Model, DataTypes } from '@sequelize/core';
import { Attribute, NotNull } from '@sequelize/core/decorators-legacy';

class User extends Model {
@Attribute(DataTypes.STRING)
@NotNull
@IsDate
declare createdAt: string;
}

IsDecimal

Checks if the string attribute is a decimal number.

import { Model, DataTypes } from '@sequelize/core';
import { Attribute, NotNull } from '@sequelize/core/decorators-legacy';
import { IsDecimal } from '@sequelize/validator.js';

class User extends Model {
@Attribute(DataTypes.STRING)
@NotNull
@IsDecimal
declare price: string;
}

IsEmail

Checks if the string attribute is an email.

import { Model, DataTypes } from '@sequelize/core';
import { Attribute, NotNull } from '@sequelize/core/decorators-legacy';
import { IsEmail } from '@sequelize/validator.js';

class User extends Model {
@Attribute(DataTypes.STRING)
@NotNull
@IsEmail
declare email: string;
}

IsFloat

Checks if the string attribute is a float number.

import { Model, DataTypes } from '@sequelize/core';
import { Attribute, NotNull } from '@sequelize/core/decorators-legacy';
import { IsFloat } from '@sequelize/validator.js';

class User extends Model {
@Attribute(DataTypes.STRING)
@NotNull
@IsFloat
declare price: string;
}

IsIP

Checks if the string attribute is an IP address (4 or 6).

import { Model, DataTypes } from '@sequelize/core';
import { Attribute, NotNull } from '@sequelize/core/decorators-legacy';
import { IsIP } from '@sequelize/validator.js';

class User extends Model {
@Attribute(DataTypes.STRING)
@NotNull
@IsIP(4) // optionally pass 4 or 6 to check for a specific IP version
declare ip: string;
}

IsIPv4

Checks if the string attribute is an IPv4 address.

import { Model, DataTypes } from '@sequelize/core';
import { Attribute, NotNull } from '@sequelize/core/decorators-legacy';
import { IsIPv4 } from '@sequelize/validator.js';

class User extends Model {
@Attribute(DataTypes.STRING)
@NotNull
@IsIPv4
declare ipV4: string;
}

IsIPv6

Checks if the string attribute is an IPv6 address.

import { Model, DataTypes } from '@sequelize/core';
import { Attribute, NotNull } from '@sequelize/core/decorators-legacy';
import { IsIPv6 } from '@sequelize/validator.js';

class User extends Model {
@Attribute(DataTypes.STRING)
@NotNull
@IsIPv6
declare ipV6: string;
}

IsIn

Checks if the string attribute is in a array of allowed values.

import { Model, DataTypes } from '@sequelize/core';
import { Attribute, NotNull } from '@sequelize/core/decorators-legacy';
import { IsIn } from '@sequelize/validator.js';

class User extends Model {
@Attribute(DataTypes.STRING)
@NotNull
@IsIn(['admin', 'user'])
declare role: string;
}

NotIn

Checks if the string attribute is not in a array of disallowed values.

import { Model, DataTypes } from '@sequelize/core';
import { Attribute, NotNull } from '@sequelize/core/decorators-legacy';
import { NotIn } from '@sequelize/validator.js';

class User extends Model {
@Attribute(DataTypes.STRING)
@NotNull
@NotIn(['admin', 'user'])
declare role: string;
}

IsInt

Checks if the string attribute is an integer.

import { Model, DataTypes } from '@sequelize/core';
import { Attribute, NotNull } from '@sequelize/core/decorators-legacy';
import { IsInt } from '@sequelize/validator.js';

class User extends Model {
@Attribute(DataTypes.STRING)
@NotNull
@IsInt
declare age: string;
}

IsLowercase

Checks if the string attribute is lowercase.

import { Model, DataTypes } from '@sequelize/core';
import { Attribute, NotNull } from '@sequelize/core/decorators-legacy';
import { IsLowercase } from '@sequelize/validator.js';

class User extends Model {
@Attribute(DataTypes.STRING)
@NotNull
@IsLowercase
declare username: string;
}

IsNumeric

Checks if the string attribute is numeric.

import { Model, DataTypes } from '@sequelize/core';
import { Attribute, NotNull } from '@sequelize/core/decorators-legacy';
import { IsNumeric } from '@sequelize/validator.js';

class User extends Model {
@Attribute(DataTypes.STRING)
@NotNull
@IsNumeric
declare age: string;
}

IsUUID

Checks if the string attribute is a UUID.

import { Model, DataTypes } from '@sequelize/core';
import { Attribute, NotNull } from '@sequelize/core/decorators-legacy';
import { IsUUID } from '@sequelize/validator.js';

class User extends Model {
@Attribute(DataTypes.STRING)
@NotNull
@IsUUID(4) // UUID version is optional
declare uuid: string;
}

IsUppercase

Checks if the string attribute is uppercase.

import { Model, DataTypes } from '@sequelize/core';
import { Attribute, NotNull } from '@sequelize/core/decorators-legacy';
import { IsUppercase } from '@sequelize/validator.js';

class User extends Model {
@Attribute(DataTypes.STRING)
@NotNull
@IsUppercase
declare username: string;
}

IsUrl

Checks if the string attribute is a URL.

import { Model, DataTypes } from '@sequelize/core';
import { Attribute, NotNull } from '@sequelize/core/decorators-legacy';
import { IsUrl } from '@sequelize/validator.js';

class User extends Model {
@Attribute(DataTypes.STRING)
@NotNull
@IsUrl
declare website: string;
}

Length

Checks if the string attribute has a length between min and max.

import { Model, DataTypes } from '@sequelize/core';
import { Attribute, NotNull } from '@sequelize/core/decorators-legacy';
import { Length } from '@sequelize/validator.js';

class User extends Model {
@Attribute(DataTypes.STRING)
@NotNull
@Length([3, 10])
declare username: string;
}

Max

Checks if the string attribute is not longer than the specified number of characters.

import { Model, DataTypes } from '@sequelize/core';
import { Attribute, NotNull } from '@sequelize/core/decorators-legacy';
import { Max } from '@sequelize/validator.js';

class User extends Model {
@Attribute(DataTypes.STRING)
@NotNull
@Max(10)
declare username: string;
}

Min

Checks if the string attribute is not shorter than the specified number of characters.

import { Model, DataTypes } from '@sequelize/core';
import { Attribute, NotNull } from '@sequelize/core/decorators-legacy';
import { Min } from '@sequelize/validator.js';

class User extends Model {
@Attribute(DataTypes.STRING)
@NotNull
@Min(3)
declare username: string;
}

NotEmpty

Checks if the string attribute is not an empty string (after trimming).

import { Model, DataTypes } from '@sequelize/core';
import { Attribute, NotNull } from '@sequelize/core/decorators-legacy';
import { NotEmpty } from '@sequelize/validator.js';

class User extends Model {
@Attribute(DataTypes.STRING)
@NotNull
@NotEmpty
declare username: string;
}

Index

Modules

Functions