How to use Sequelize CLI

Updated: December 29, 2023 By: Guest Contributor Post a comment

Overview

Sequelize Command Line Interface (CLI) is a powerful tool that facilitates database operations and workflow management for applications using the Sequelize ORM. This tutorial aims to guide you through the basic to advanced usage of Sequelize CLI with practical code examples. By the end of this guide, you’ll be equipped with the knowledge to leverage Sequelize in your Node.js projects effectively.

Sequelize CLI is a package that provides command line functionality for managing your Sequelize-based projects. It allows you to perform tasks like database migrations, model generation, and seeding directly from the terminal, simplifying the development process significantly.

This tutorial assumes you have a basic understanding of Node.js, npm, and relational databases.

Getting Started with Sequelize CLI

The first step in utilizing the Sequelize CLI is to install it. You must have Node.js and npm already set up in your environment. Install Sequelize CLI globally using the following npm command:

npm install -g sequelize-cli

After installation, you can access the CLI by invoking sequelize in your terminal. Verify that the installation was successful by checking the version number:

sequelize --version

If you see a version number output, you’re all set to proceed.

Project Initialization

Start by initializing a new Sequelize project using the sequelize init command. This will create necessary configuration files and folders in your project directory:

sequelize init

You will see the following directories and files created:

  • config/config.json: Contains database configuration.
  • migrations: Folder to store migration files.
  • models: Folder to store model files.
  • seeders: Folder to store seed files.

It’s a good practice to review and adjust the contents of config/config.json to suit your database configurations.

Creating Models and Migrations

With the project initialized, you can create models and their corresponding migrations. Here’s a command to generate a model named User with some basic attributes:

sequelize model:create --name User --attributes firstName:string,lastName:string,email:string

This command will generate a model file in the models folder and a migration file in the migrations folder, which you can then modify if necessary.

Database Migrations

Migrations are essential for managing database schema changes. Apply your migrations using the command:

sequelize db:migrate

If you need to revert a migration, you can do so with:

sequelize db:migrate:undo

To revert all migrations, run:

sequelize db:migrate:undo:all

Seeding the Database

Database seeding populates your database with initial data. To create a seed file, run:

sequelize seed:generate --name demo-user

Edit the seed file with the data you want to insert into the database. To run the seed, use:

sequelize db:seed:all

To undo seed operations, you can use:

sequelize db:seed:undo

Or for undoing a specific seed:

sequelize db:seed:undo --seed name-of-seed-as-in-file

Advanced Usage

Sequelize CLI also allows for more advanced usage such as setting up multiple configurations for different environments, writing custom SQL in migrations, and using the programmatic API to integrate with custom scripts.

Multiple environments can be managed through the config.json file by having separate keys for development, test, and production, each with their respective database configurations.

When it comes to writing custom SQL in migrations, Sequelize CLI gives you the option to execute raw queries:

module.exports = { up: async (queryInterface, Sequelize) => { await queryInterface.sequelize.query('YOUR RAW SQL HERE'); }, down: async (queryInterface, Sequelize) => { await queryInterface.sequelize.query('REVERT RAW SQL HERE'); } };

Moreover, with the programmatic API, you’re able to write JavaScript code that uses the Sequelize CLI within your application:

const { Sequelize, Migration } = require('sequelize-cli')

Conclusion

This tutorial provided an in-depth look into the Sequelize CLI, from initialization and model creation to advanced data management and configuration techniques. By mastering these fundamentals and more complex operations, you are now equipped to handle the database aspects of your Node.js applications with finesse and confidence. Remember to always test your migrations and seeds in a development environment before applying them to production, and make use of sequelize’s logging capabilities to troubleshoot any issues that arise.