Sequelize provides support for most data types that you can find in SQL-based databases.
When defining types, you can use both Sequelize class and DataTypes class interchangeably as shown below:
const User = sequelize.define(
“User”,
{
firstName: DataTypes.STRING,
lastName: Sequelize.STRING,
},
{
timestamps: false,
}
);
Some of the data types supported by Sequelize are as follows:
Sequelize.STRING // VARCHAR(255)
Sequelize.STRING.BINARY // VARCHAR BINARY
Sequelize.TEXT // TEXT
Sequelize.TEXT(‘tiny’) // TINYTEXT
Sequelize.BOOLEAN // TINYINT(1)
Sequelize.INTEGER // INTEGER
Sequelize.BIGINT // BIGINT
Sequelize.BIGINT(11) // BIGINT(11)
Sequelize.FLOAT // FLOAT
Sequelize.FLOAT(11) // FLOAT(11)
Sequelize.FLOAT(11, 10) // FLOAT(11,10)
Sequelize.DOUBLE // DOUBLE
Sequelize.DOUBLE(11) // DOUBLE(11)
Sequelize.DOUBLE(11, 10) // DOUBLE(11,10)
Sequelize.DECIMAL // DECIMAL
Sequelize.DECIMAL(10, 2) // DECIMAL(10,2)
Sequelize also supports many types that are available only for specific vendors.
For MySQL and MariaDB, you can define unsigned or zero fill integers as shown below:
Sequelize.INTEGER.UNSIGNED
Sequelize.INTEGER.ZEROFILL
Sequelize.INTEGER.UNSIGNED.ZEROFILL // both unsigned and zero fill
You can use the unsigned or zero fill options for INTEGER, BIGINT, FLOAT, and DOUBLE types.
Sequelize also has support for the date types.
Sequelize.DATE is used for DATETIME column, while Sequelize.DATEONLY is used for DATE column (no timestamp):
Sequelize.DATE // DATETIME for MySQL and SQLite, TIMESTAMP for Postgres
Sequelize.DATEONLY // DATE without time.