Giới thiệu về Sequelize
Sequelize là một ORM (Object-Relational Mapping) dựa trên Promise cho Node.js, hỗ trợ nhiều hệ quản trị cơ sở dữ liệu như Postgres, MySQL, MariaDB, SQLite và Microsoft SQL Server.
Dưới đây là một số tính năng chính của Sequelize trong Node.js:
Hỗ trợ Transaction (giao dịch)
Quản lý quan hệ (Relations)
Eager Loading và Lazy Loading
Read Replication và nhiều tính năng khác...
Kết nối MySQL bằng Sequelize
Chúng ta cần thiết lập kết nối giữa MySQL và Node.js thông qua Sequelize.
Sau khi kết nối thành công, chúng ta cần ba file cấu hình sau. Hãy tạo cẩn thận các file này trong đúng thư mục tương ứng.
SequelizeDemo > application.js- File gốc chứa logic chính.SequelizeDemo > utils > database.js- Chứa thông tin kết nối MySQL.SequelizeDemo > models > user.js- Chứa định nghĩa model.
Ví dụ
Cấu hình Database.js
const Sequelize = require('sequelize');
const sequelize = new Sequelize(
'YOUR_DB_NAME', // TutorialsPoint
'YOUR_DB_USER_NAME', // root
'YOUR_DB_PASSWORD', // root
{
dialect: 'mysql',
host: 'localhost'
}
);
module.exports = sequelize;
Vui lòng điền đầy đủ thông tin kết nối cơ sở dữ liệu của bạn.
Cấu hình User.js
Sử dụng file này để định nghĩa ánh xạ giữa model và bảng.
const Sequelize = require('sequelize');
const sequelize = require('../utils/database');
const User = sequelize.define('user', {
// Cột #1: user_id
user_id: {
type: Sequelize.INTEGER,
autoIncrement: true,
allowNull: false,
primaryKey: true
},
// Cột #2: name
name: {
type: Sequelize.STRING,
allowNull: false
},
// Cột #3: email
email: {
type: Sequelize.STRING,
allowNull: false
},
// Cột: Timestamps
createdAt: Sequelize.DATE,
updatedAt: Sequelize.DATE,
});
module.exports = User;
Cấu hình app.js
Để tạo model, chúng ta có thể sử dụng một trong hai phương pháp:
Phương thức sync() - Chỉ tạo model nếu chưa tồn tại. Nếu model đã tồn tại, sẽ không ghi đè.
Phương thức sync({force: true}) - Tạo model mới nếu chưa tồn tại, nhưng nếu đã tồn tại thì sẽ ghi đè model hiện tại.
// Import model database
const sequelize = require('./database');
// Import model user
const User = require('./user');
// Tạo tất cả bảng được định nghĩa trong user
sequelize.sync();
// Bạn có thể thay đổi file user.js
// Và chạy lại code để kiểm tra xem có ghi đè code hiện tại hay không.
sequelize.sync({force: true});
Kết quả
Khi chạy chương trình trên, bạn sẽ nhận được kết quả sau:
C:\Users\SequelizeDemo>> node app.js Executing (default): CREATE TABLE IF NOT EXISTS `users` (`user_id` INTEGER NOT NULL auto_increment , `name` VARCHAR(255) NOT NULL, `email` VARCHAR(255) NOT NULL, `createdAt` DATETIME, `updatedAt` DATETIME, PRIMARY KEY (`user_id`)) ENGINE=InnoDB; Executing (default): SHOW INDEX FROM `users`
Bây giờ bạn có thể kiểm tra cơ sở dữ liệu. Bảng trên đã được tạo.