0
0
Lập trình
Sơn Tùng Lê
Sơn Tùng Lê103931498422911686980

Hướng Dẫn Sử Dụng Sequelize ORM Để Quản Lý Cơ Sở Dữ Liệu Trong Node.js

Đăng vào 1 tháng trước

• 5 phút đọc

Chủ đề:

Node.js

Làm Chủ Tương Tác Cơ Sở Dữ Liệu Trong Node.js Với Sequelize ORM

Cơ sở dữ liệu đóng vai trò thiết yếu trong việc phát triển ứng dụng, cho dù là trên nền tảng di động hay web. Hiểu biết về cách ứng dụng tương tác hiệu quả với cơ sở dữ liệu là bước quan trọng để lưu trữ dữ liệu một cách an toàn và hiệu quả. Bài viết này sẽ hướng dẫn bạn cách sử dụng Sequelize ORM để tối ưu hóa quá trình giao tiếp giữa ứng dụng Node.js và cơ sở dữ liệu.

ORM Là Gì? Những Lợi Ích và Công Cụ Phổ Biến

ORM (Object-Relational Mapping) là cách tiếp cận giúp tương tác với cơ sở dữ liệu bằng cách trừu tượng hóa các kiểu dữ liệu vào các biến lập trình. Điều này giúp lập trình viên không phải trực tiếp viết các truy vấn SQL, mà thay vào đó, họ có thể sử dụng các đối tượng trong ngôn ngữ lập trình.

Những Lợi Ích Của ORM

  • Bảo Mật Cao Hơn: ORM giúp giảm thiểu nguy cơ SQL Injection và các cuộc tấn công khác. Với ORM, các truy vấn được xây dựng một cách an toàn hơn, nhờ vào việc kiểm soát đầu vào.
  • Giao Tiếp Dễ Dàng Hơn: Bạn có thể tương tác với cơ sở dữ liệu mà không cần phải hiểu biết sâu về ngôn ngữ SQL, nhờ vào các phương thức có sẵn trong ORM.
  • Tính Linh Hoạt: ORM cho phép mã nguồn có thể chuyển đổi một cách dễ dàng giữa các loại cơ sở dữ liệu khác nhau mà không làm ảnh hưởng đến khối lượng công việc.
  • Tính Năng Bổ Sung Hữu Ích: ORM thường đi kèm với các tính năng như di chuyển cơ sở dữ liệu và kiểm soát phiên bản.

Một Số Công Cụ ORM Phổ Biến

  • SQLAlchemy
  • Prisma ORM
  • Sequelize
  • ActiveRecord
  • TypeORM
  • Waterline

Trong bài viết này, chúng ta sẽ sử dụng Sequelize, một công cụ ORM phổ biến trong cộng đồng Node.js, để kết nối với cơ sở dữ liệu MySQL.

Thiết Lập Ứng Dụng Node.js

Bước 1: Khởi Tạo Dự Án Node

Mở terminal và chạy lệnh npm init để tạo một cấu trúc dự án Node mới.

Bước 2: Cài Đặt Thư Viện Express

Cài đặt Express làm framework backend bằng lệnh npm install express.

Bước 3: Cài Đặt Sequelize và MySQL2

Để sử dụng ORM, bạn cần cài đặt Sequelize: npm install sequelize. Tiếp theo, cài đặt trình điều khiển MySQL: npm install mysql2.

Xây Dựng Dự Án Demo

Cấu Hình Kết Nối Cơ Sở Dữ Liệu

Tạo tệp SequelizeConfig.js để thiết lập thông tin kết nối cơ sở dữ liệu:

javascript Copy
module.exports = {
    HOST: "localhost",
    USER: "root",
    PASSWORD: "",
    DB: "sequel",
    dialect: "mysql"
};

Kết Nối và Tạo Model

Khởi tạo kết nối với cơ sở dữ liệu và định nghĩa các mô hình dữ liệu. Dưới đây là ví dụ mô hình user:

javascript Copy
const Sequelize = require("sequelize");

module.exports = (sequelize) => {
    sequelize.define("user", {
        firstName: { type: Sequelize.DataTypes.STRING, allowNull: false },
        lastName: { type: Sequelize.DataTypes.STRING, allowNull: false },
        email: { type: Sequelize.DataTypes.STRING, allowNull: false, unique: true },
        password: { type: Sequelize.DataTypes.STRING, allowNull: false },
        role: { type: Sequelize.DataTypes.STRING, allowNull: false }
    });
};

Thao Tác CRUD Trong Sequelize

Tạo Người Dùng

javascript Copy
const createUser = async (userInfo) => {
    // Kiểm tra email đã tồn tại
    const ifEmailExists = await User.findOne({ where: { email: userInfo.email } });
    if (ifEmailExists) {
        throw new ApiError('Email đã được đăng ký');
    }
    // Tạo người dùng mới
    const newUser = await User.create(userInfo);
    return newUser;
};

Đọc Người Dùng

javascript Copy
const fetchUser = async (userId) => {
    let userDets;
    if (userId) {
        userDets = await User.findOne({ where: { id: userId } });
        if (!userDets) {
            throw new ApiError(httpStatus.NOT_FOUND, 'Không tìm thấy người dùng');
        }
    } else {
        userDets = await User.findAll();
        if (userDets.length === 0) {
            throw new ApiError(httpStatus.NOT_FOUND, 'Không tìm thấy người dùng nào');
        }
    }
};

Cập Nhật Người Dùng

javascript Copy
const updateUser = async (userId, userDetails) => {
    const user = await User.findOne({ where: { id: userId } });
    if (!user) {
        throw new ApiError(httpStatus.BAD_REQUEST, "Người dùng không tồn tại");
    }
    await User.update(userDetails, { where: { id: userId } });
    return await User.findOne({ where: { id: userId } });
};

Xóa Người Dùng

javascript Copy
const deleteUser = async (userId) => {
    const user = await User.findOne({ where: { id: userId } });
    if (!user) {
        throw new ApiError(httpStatus.BAD_REQUEST, "Người dùng không tồn tại");
    }
    await user.destroy();
    return user;
};

Kết Luận

Đến đây, bạn đã nắm vững cách tích hợp Sequelize ORM vào trong ứng dụng Node.js để thực hiện các thao tác CRUD với cơ sở dữ liệu. Từ việc tạo đến xóa người dùng, bạn đã thấy ORM giúp đơn giản hóa quá trình tương tác với cơ sở dữ liệu. Để nâng cao kiến thức, hãy khám phá thêm các tài liệu và thực hành với các dự án phức tạp hơn. Cảm ơn bạn đã theo dõi!
source: viblo

Gợi ý câu hỏi phỏng vấn
Không có dữ liệu

Không có dữ liệu

Bài viết được đề xuất
Bài viết cùng tác giả

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào