0
0
Lập trình
Admin Team
Admin Teamtechmely

Hướng Dẫn Chi Tiết Học Sequelize Từ Cơ Bản Đến Nâng Cao

Đăng vào 3 tuần trước

• 3 phút đọc

Giới thiệu về Sequelize

Bài viết này là ghi chú hướng dẫn học Sequelize – một thư viện ORM (Object Relational Mapping) mạnh mẽ cho Node.js. Nội dung sẽ giúp bạn nắm rõ khái niệm và cách sử dụng Sequelize một cách dễ hiểu.

1. Giới thiệu khái niệm

  • Sequelize là một thư viện ORM sử dụng cho Node.js, giúp quản lý và tương tác với cơ sở dữ liệu một cách dễ dàng.
  • Nó tương tự như Hibernate trong Java, cho phép lập trình viên làm việc với các đối tượng thay vì truy vấn SQL trực tiếp.
  • Đọc thêm về Hibernate ở đây: Hibernate.

Nói tóm lại, Sequelize cung cấp một phương pháp đơn giản để kết nối và làm việc với cơ sở dữ liệu trong ứng dụng Node.js.

2. Cài đặt Sequelize

Bước 1: Đảm bảo cài đặt Node.js

Trước tiên, bạn cần phải cài đặt Node.js trên máy tính của mình.

Bước 2: Cài đặt Sequelize và mysql2

Sử dụng npm hoặc yarn để cài đặt:

bash Copy
$ npm install --save sequelize
$ npm install --save mysql2

Bước 3: Thiết lập kết nối với cơ sở dữ liệu

Sau khi cài đặt xong, cần kết nối với cơ sở dữ liệu MySQL. Dưới đây là các bước để kết nối:

  1. Import thư viện Sequelize.
  2. Tạo một instance của Sequelize.
  3. Kiểm tra kết nối với cơ sở dữ liệu.
javascript Copy
const { Sequelize } = require('sequelize');

const sequelize = new Sequelize('mysql://username:password@localhost:3306/databasename');

(async () => {
  try {
    await sequelize.authenticate();
    console.log('Kết nối MySQL thành công!');
  } catch (error) {
    console.error('Kết nối MySQL thất bại:', error);
  }
})();

3. Tạo Models

Định nghĩa Model

Một model đại diện cho một bảng trong cơ sở dữ liệu và được xây dựng bằng cách kế thừa từ class Model của Sequelize.

Quy tắc đặt tên Model

  • Tên bảng nên ở dạng số nhiều, chữ thường và sử dụng snake_case.
  • Tên model nên ở dạng số ít và PascalCase.

Cách tạo Model

javascript Copy
const { Sequelize, DataTypes, Model } = require('sequelize');
const sequelize = require('../config/db');

class User extends Model {}

User.init({
  userid: {
    type: DataTypes.BIGINT,
    primaryKey: true,
    autoIncrement: true
  },
  username: {
    type: DataTypes.STRING,
    unique: true,
    allowNull: false
  }
}, {
  sequelize,
  modelName: 'User',
  tableName: 'Users'
});

module.exports = User;

4. Tương tác với dữ liệu

Các phương thức chính

Sequelize cung cấp hai loại phương thức để tương tác với dữ liệu:

  1. Class Methods: áp dụng cho tất cả các bản ghi trong model (e.g., User.findAll(), User.create()).
  2. Instance Methods: áp dụng cho một bản ghi cụ thể (e.g., user.save(), user.destroy()).

Ví dụ về CRUD

Tạo mới:

javascript Copy
await User.create({ username: 'John', password: '1234' });

Đọc:

javascript Copy
const users = await User.findAll();

Cập nhật:

javascript Copy
await User.update({ password: 'newpassword' }, { where: { userid: 1 } });

Xóa:

javascript Copy
await User.destroy({ where: { userid: 1 } });

5. Xây dựng Mối Quan Hệ (Associations)

Các loại quan hệ

Sequelize hỗ trợ các loại mối quan hệ như sau:

  1. One-To-One: Dùng hasOnebelongsTo.
  2. One-To-Many: Dùng hasManybelongsTo.
  3. Many-To-Many: Dùng belongsToMany với bảng trung gian.

Ví dụ về mối quan hệ

javascript Copy
User.hasMany(WorkingTime, { foreignKey: 'userid' });
WorkingTime.belongsTo(User, { foreignKey: 'userid' });

Kiểm tra Mối Quan Hệ

Sau khi thiết lập mối quan hệ, bạn có thể truy vấn dữ liệu dễ dàng thông qua các phương thức của Sequelize, tối ưu hóa hiệu suất và giảm thiểu số lượng truy vấn đến cơ sở dữ liệu.

Kết luận

Bài viết đã cung cấp cho bạn cái nhìn tổng quan về cách sử dụng Sequelize từ cài đặt đến cách thức để tạo models và xây dựng mối quan hệ giữa các bảng. Hy vọng rằng bạn sẽ ứng dụng được những kiến thức này vào dự án của mình.

Tham khảo thêm tài liệu chính thức tại Sequelize Documentation.
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