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
$ 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:
- Import thư viện Sequelize.
- Tạo một instance của Sequelize.
- Kiểm tra kết nối với cơ sở dữ liệu.
javascript
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
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:
- Class Methods: áp dụng cho tất cả các bản ghi trong model (e.g.,
User.findAll()
,User.create()
). - 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
await User.create({ username: 'John', password: '1234' });
Đọc:
javascript
const users = await User.findAll();
Cập nhật:
javascript
await User.update({ password: 'newpassword' }, { where: { userid: 1 } });
Xóa:
javascript
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:
- One-To-One: Dùng
hasOne
vàbelongsTo
. - One-To-Many: Dùng
hasMany
vàbelongsTo
. - Many-To-Many: Dùng
belongsToMany
với bảng trung gian.
Ví dụ về mối quan hệ
javascript
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