Sử dụng Sequelize trong Node.js

22:36 11/02/2025

Sequelize là gì? Cách sử dụng Sequelize trong Node.js như thế nào? Cùng khám phá trong bài viết dưới đây nhé!

Giới Thiệu về Sequelize 

Sequelize là gì

Sequelize là một thư viện hay trong Node.js giúp làm việc với cơ sở dữ liệu dễ dàng mà không cần phải viết các lệnh SQL. Tài liệu hướng dẫn cài đặt và sử dụng ở đây https://sequelize.org/docs/v6/getting-started/ 

Các tính năng hay của sequelize

Tương tác database

Sequelize cho phép bạn tương tác với nhiều hệ quản trị cơ sở dữ liệu như MySQL, PostgreSQL, MSSQL. Khi sử dụng Sqquelize không cần viết các câu lệnh SQL mà thay vào đó là dùng các đối tượng JavaScript. Đặc điểm này của Sequelize gọi là ORM ((Object-Relational Mapping) giúp code dễ viết code, dễ đọc hơn.

Validation data: 

Sequelize hỗ trợ xác thực dữ liệu trước khi lưu vào cơ sở dữ liệu.

Association (Quan hệ)

Sequelize hỗ trợ các quan hệ giữa các bảng như hasMany, belongsTo, belongsToMany, v.v.

Migration

Sequelize cung cấp các công cụ để quản lý các thay đổi đối với cấu trúc cơ sở dữ liệu thông qua các migration.

Các thao tác cơ bản khi dùng Sequelize

Cài đặt sequelize

Để sử dụng sequelize trong Node.js,  bạn cài đặt bằng lệnh :  npm install sequelize   

Sau khi cài xong, bạn cần cài thêm driver liên quan đến cơ sở dữ liệu muốn dùng (như mysql, postgresql, sqlite, mssql ). Mời xem các ví dụ

npm install pg pg-hstore # Postgres
npm install mysql2       # Mysql
npm install sqlite3
npm install tedious     # Microsoft SQL Server
npm install oracledb    # Oracle Database

Kết nối database

Bạn cần thực hiện kết nối đến database rồi sau đó muốn làm gì thì làm. Đây là ví dụ kết nối với MySQL:

const { Sequelize, DataTypes } = require(‘sequelize’);

const sequelize = new Sequelize(‘db_name’, ‘db_user’, ‘db_pass’ , {

  host: ‘localhost’, 

  dialect: ‘mysql’  /* ‘mysql’ | ‘postgres’ | ‘sqlite’ | ‘mssql’ | ‘oracle’ */

});

Tạo model

Trong Sequelize, model giống như một class để mô tả table. Thông qua model trong Sequelize , bạn có thể select, tạo mới, cập nhật, xóa các dòng dữ liệu trong table rất dễ dàng. Ví dụ sau là model mô tả bảng san_pham:

const SP  = sequelize.define(‘san_pham’, { 

    ten_sp: {type: DataTypes.STRING },

    ngay: { type: DataTypes.DATE }, 

    hinh: {type: DataTypes.STRING},

    gia: {type: DataTypes.INTEGER  },

    an_hien:{ type:DataTypes.INTEGER},

  },

  { tableName:“san_pham“ }

);

Thực tập quản trị dữ liệu với sequelize

Mời bạn thực tập theo để học cách quản trị dữ liệu với sequelize nhé. Sau đây là các bước

 Tạo project và cài sequelize và kết nối đến database

  1. Tạo một folder tên gì đó (ví dụ testSequelize), rồi chuyển vào folder mới tạo và chạy lệnh npm init

2. Cài các module cần thiết

npm install express 

npm install nodemon

3. Mở file package.json và nhập thêm lệnh trong mục scripts như sau:  “start”: “nodemon index”,

{

  “name”: “testsequelize”,

  “main”: “index.js”,

  “scripts”: {

    “start”: “nodemon index”,

    “test”: “echo \”Error: no test specified\” && exit 1″

  },

  “dependencies”: {

    “express”: “^4.21.2”,

    “mysql2”: “^3.12.0”,

    “nodemon”: “^3.1.9”,

    “sequelize”: “^6.37.5”

  }

}

4. Tạo đối tượng ứng dụng nodejs: Tạo file index.js và code

const express = require(“express”)

var app = express()

const port = 3000

app.use(express.json()); 

//routes

app.listen(port, () =>{ console.log(`Ung dung dang chay o port ${port}`); })

.on(‘error’, function(err) { console.log(`Loi khi chay ung dung ${err}`) ; })

5. Chạy thử ứng dụng: npm start

Cài sequelize và kết nối đến database

  1. Chạy các lệnh sau để cài đặt sequelize  kết nối đến mysql 

npm install sequelize   

npm install mysql2

2. Kết nối đến database và tạo các model mô tả table: 

Giả sử bạn có database tên laptop_node

Trong folder project , tạo file database.js và thực hiện kết nối database ,  mô tả các table : 

const { Sequelize, DataTypes } = require(‘sequelize’);

// Tạo đối tượng kết nối đến database

const sequelize = new Sequelize(‘laptop_node’, ‘root’, ” , {

  host: ‘localhost’, dialect: ‘mysql’

});

// model mô tả table loai

const Loai = sequelize.define(‘loai’, { 

  id :{type:DataTypes.INTEGER ,primaryKey:true, autoIncrement:true }, 

  ten_loai: {type: DataTypes.STRING, allowNull:false },

  thu_tu: { type: DataTypes.INTEGER, defaultValue:0 }, 

  an_hien:{ type:DataTypes.INTEGER, defaultValue:0},

},

{ timestamps:false,  tableName:“loai” }

);

// model diễn tả cấu trúc 2 table san_pham 

const SP = sequelize.define(‘san_pham’, { 

  id :{type:DataTypes.INTEGER ,primaryKey:true, autoIncrement:true }, 

  ten_sp: {type: DataTypes.STRING },

  ngay: { type: DataTypes.DATE }, 

  gia: {type: DataTypes.INTEGER  },

  gia_km: {type: DataTypes.INTEGER },

  id_loai:{ type:DataTypes.INTEGER},

  hot:{ type:DataTypes.INTEGER},

  an_hien:{ type:DataTypes.INTEGER},

  hinh: {type: DataTypes.STRING},

},

{ timestamps:false, tableName:“san_pham” }

);

module.exports = { SP, Loai }

Lấy danh sách dữ liệu trong table loại

Trong index.js , code dùng hàm findAll trong model để select dữ liệu 

//routes

const {SP, Loai}  = require(“./database.js”)

app.get(“/api/loai”, async(req, res) =>{

    const loai_arr = await Loai.findAll(

    { 

        where: { an_hien:1  },  

        order: [ [‘thu_tu’, ‘ASC’]],

    })

    res.json(loai_arr);

})

Test với postman

Lấy danh sách dữ liệu trong table sản phẩm

Trong index.js , code dùng hàm findAll trong model để select dữ liệu 

app.get(“/api/sp”, async(req, res) =>{

    const sp_arr = await SP.findAll({ 

        where: { an_hien:1, hot:1  },  

        order: [ [‘ngay’, ‘DESC’], [‘gia’, ‘ASC’] ],

        offset: 0, limit: 12,

    })

    res.json(sp_arr);

})

Test với postman

Tạo record mới trong table 

Để tạo record mới trong table, dùng hàm create trong model. Trong index.js, code như sau

app.post(“/api/sp”, async(req, res) =>{

    let {ten_sp, gia, gia_km, hinh, id_loai } = req.body

    const kq = await SP.create({ 

        ten_sp: ten_sp, 

        gia: gia ,

        gia_km: gia_km,

        id_loai:id_loai,

        hinh:hinh

    });

    res.json(kq);

})

Test với postman

{  

    “ten_sp”:“Asus Vivobook Go 15 E1504FA R5”, 

    “gia”:12000000,

    “gia_km”:11760000,

    “id_loai”:1, 

    “hinh”:“https://cdn.tgdd.vn/Products/Images/44/311178/asus-vivobook-go-15-e1504fa-r5-nj776w-glr-13-750×500.jpg” 

}

Cập nhật record trong table 

Để cập nhật record trong table, dùng hàm update  trong model. Trong index.js, code như sau

app.put(“/api/sp/:id”, async(req, res) =>{

    let id = req.params.id;

    let {ten_sp, gia, gia_km, hinh, id_loai } = req.body

    const kq = await SP.update({ 

        ten_sp: ten_sp, 

        gia: gia ,

        gia_km: gia_km,

        id_loai:id_loai,

        hinh:hinh

    }, 

    {  where: {id: id}   }

    );

    res.json(kq);

})

Test với postman

{  

    “ten_sp”:“Asus Vivobook Go 15 E1504FA”, 

    “gia”:13000000,

    “gia_km”:11760000,

    “id_loai”:1, 

    “hinh”:“https://cdn.tgdd.vn/Products/Images/44/311178/asus-vivobook-go-15-e1504fa-r5-nj776w-glr-13-750×500.jpg” 

}

Xóa record trong table 

Để xóa record trong table, dùng hàm destroy  trong model. Trong index.js, code như sau

app.delete(“/api/sp/:id”, async(req, res) =>{

    let id = req.params.id;

    const kq = await SP.destroy({ where: {id: id} });

    res.json(kq);

})

Test với postman

Sequelize là một thư viện hay, giúp tương tác với database dễ dàng. Với Sequelize, bạn có thể dễ dàng tạo, đọc, cập nhật và xóa dữ liệu mà không phải viết quá nhiều SQL thủ công. 

Giảng viên Nguyễn Văn Long
Bộ môn Công nghệ thông tin
FPT Polytechnic TP HCM

Hỗ trợ tư vấn và giải đáp thông tin tuyển sinh FPT Polytechnic

Cùng chuyên mục

Đăng ký nhập học tại FPT Polytechnic 2026

  • Max. file size: 50 MB.
  • Max. file size: 50 MB.
  • Max. file size: 50 MB.