Swiftorial Logo
Home
Swift Lessons
Matchups
CodeSnaps
Tutorials
Career
Resources

Using Sequelize ORM in Node.js

1. Introduction

Sequelize is a promise-based Node.js ORM for various relational databases, including PostgreSQL, MySQL, SQLite, and Microsoft SQL Server. It provides an easy way to interact with databases, allowing you to define models and perform CRUD operations.

2. Installation

To get started with Sequelize, you need to install it along with the database driver for your database of choice. Here's how you can do it:

npm install sequelize mysql2

Replace mysql2 with the appropriate driver for your database (e.g., pg for PostgreSQL).

3. Basic Usage

To use Sequelize, you need to create an instance of Sequelize and connect to your database:

const { Sequelize } = require('sequelize');

const sequelize = new Sequelize('database', 'username', 'password', {
    host: 'localhost',
    dialect: 'mysql' // Choose dialect from 'mysql' | 'sqlite' | 'postgres' | 'mssql'
});

Once connected, you can start defining models and performing operations.

4. Models

Models in Sequelize represent tables in your database. You can define a model like this:

const User = sequelize.define('User', {
    username: {
        type: Sequelize.STRING,
        allowNull: false
    },
    password: {
        type: Sequelize.STRING,
        allowNull: false
    }
});

After defining a model, you can synchronize it with the database:

sequelize.sync();

5. Associations

Sequelize supports various associations like one-to-one, one-to-many, and many-to-many. Here's an example of a one-to-many association:

const Post = sequelize.define('Post', {
    title: {
        type: Sequelize.STRING,
        allowNull: false
    }
});

User.hasMany(Post); // A User can have many Posts
Post.belongsTo(User); // A Post belongs to a User

6. Queries

Sequelize provides a robust API for querying data. Here are some examples:

  • Create a new user:
  • const newUser = await User.create({ username: 'john', password: 'secret' });
  • Find a user by username:
  • const user = await User.findOne({ where: { username: 'john' } });
  • Update a user:
  • user.password = 'newpassword';
    await user.save();
  • Delete a user:
  • await user.destroy();

7. Best Practices

To ensure your application is maintainable and scalable, consider the following best practices:

  • Use migrations to version your database schema.
  • Define your models clearly and document their relationships.
  • Utilize transactions for operations that involve multiple queries.
  • Keep your queries optimized to avoid performance bottlenecks.

8. FAQ

What databases are supported by Sequelize?

Sequelize supports PostgreSQL, MySQL, MariaDB, SQLite, and Microsoft SQL Server.

Can I use Sequelize with TypeScript?

Yes, Sequelize has TypeScript definitions available, and you can use it seamlessly with TypeScript.

How do I handle migrations in Sequelize?

You can use the Sequelize CLI to create and manage migrations, which helps in versioning your database schema.