Skip to main content

Command Palette

Search for a command to run...

Sequelize Default Values

Published
View as Markdown
  1. Introduction
    In Sequelize, a popular Node.js ORM (Object-Relational Mapping) for relational databases, default values are used to specify a value that will be automatically set for a column if no explicit value is provided when a record is created. Default values are useful for ensuring that certain fields always have a valid value, even if the user or application doesn’t supply one.
    By setting default values appropriately, you can make your database schema more robust and simplify your application's data-handling logic.

  2. Setting Default Values
    You can set default values for fields in your Sequelize models when you define the model. Here’s how you can do it,

     const { Sequelize, DataTypes } = require('sequelize');
     const sequelize = new Sequelize('sqlite::memory:'); // Example using SQLite
    
     const User = sequelize.define('User', {
       username: {
         type: DataTypes.STRING,
         allowNull: false
       },
       age: {
         type: DataTypes.INTEGER,
         defaultValue: 21  // Default value of 21 for age
       },
       isActive: {
         type: DataTypes.BOOLEAN,
         defaultValue: true  // Default value of true for isActive
       },
       createdAt: {
         type: DataTypes.DATE,
         defaultValue: Sequelize.NOW  // Default to the current date and time
       }
     });
    
     sequelize.sync().then(() => {
       return User.create({
         username: 'john_doe'
         // Notice we are not providing values for age, isActive, or createdAt
       });
     }).then(user => {
       console.log(user.toJSON());
     });
    

    i) defaultValue
    This option is used to specify the default value for a column. If no value is provided for the column when a new record is created, Sequelize will automatically insert this default value.

    ii) Sequelize.NOW
    This is a special constant provided by Sequelize that represents the current date and time. It's often used as a default value for DATE or DATEONLY fields.

  3. Use Cases for Default Values

    i) Timestamps
    Automatically setting the creation or update timestamp fields.

    ii) Flags or Statuses
    Automatically setting boolean flags like isActive or isAdmin.

    iii) Counters
    Setting a default count value, such as a view count starting from zero.

    iv) Fallback values
    Providing default values for optional fields to avoid null values.

  4. Important Considerations

    i) Overriding Defaults
    If you provide a value when creating a record, the provided value will override the default.

    ii) Database-Level Defaults
    If you want to enforce defaults at the database level (e.g., in the schema itself), this should be defined in your database schema. Sequelize's default values are enforced at the application level.

    iii) Complex Defaults
    If you need a more complex default value (e.g., based on a function), you can use a function as the defaultValue.