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-cliAfter installation, you can access the CLI by invoking sequelize in your terminal. Verify that the installation was successful by checking the version number:
sequelize --versionIf 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 initYou 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:stringThis 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:migrateIf you need to revert a migration, you can do so with:
sequelize db:migrate:undoTo revert all migrations, run:
sequelize db:migrate:undo:allSeeding the Database
Database seeding populates your database with initial data. To create a seed file, run:
sequelize seed:generate --name demo-userEdit the seed file with the data you want to insert into the database. To run the seed, use:
sequelize db:seed:allTo undo seed operations, you can use:
sequelize db:seed:undoOr for undoing a specific seed:
sequelize db:seed:undo --seed name-of-seed-as-in-fileAdvanced 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.