บทนำเกี่ยวกับ Sequelize
Sequelize เป็น ORM แบบ Promise-based สำหรับ Node.js ที่รองรับเซิร์ฟเวอร์หลายประเภท เช่น Postgres, MySQL, MariaDB, SQLite และ Microsoft SQL Server
คุณสมบัติหลักของ Sequelize สำหรับ NodeJS ได้แก่:
รองรับธุรกรรม (Transaction Support)
ความสัมพันธ์ระหว่างตาราง (Relations)
การโหลดข้อมูลแบบ Eager และ Lazy Loading
การจำลองการอ่าน (Read Replication) และอื่นๆ
เชื่อมต่อ MySQL ด้วย Sequelize
เราต้องสร้างการเชื่อมต่อระหว่าง MySQL และ Node.js โดยใช้ Sequelize
หลังจากสร้างการเชื่อมต่อสำเร็จแล้ว เราจะต้องมีไฟล์การกำหนดค่า 3 ไฟล์ ดังนี้ โปรดสร้างไฟล์เหล่านี้ในโฟลเดอร์ที่เหมาะสมเท่านั้น
SequelizeDemo > application.js - ไฟล์หลักที่ chứaตรรกะการทำงาน
SequelizeDemo > utils > database.js - เก็บรายละเอียดการเชื่อมต่อ MySQL
SequelizeDemo > models > user.js - มีข้อมูลโมเดลที่จำเป็น
ตัวอย่าง
กำหนดค่า 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
โปรดกรอกข้อมูลการเชื่อมต่อฐานข้อมูลของคุณให้ครบถ้วน
กำหนดค่า User.js
ใช้ไฟล์นี้เพื่อกำหนดการแมปปิงระหว่างโมเดลและตาราง
const Sequelize = require('sequelize')
const sequelize = require('../utils/database')
const User = sequelize.define('user', {
// ชื่อคอลัมน์ #1 และคุณสมบัติ: id
user_id: {
// ชนิดข้อมูล Integer
type: Sequelize.INTEGER,
// เพิ่มค่าอัตโนมัติ
autoIncrement: true,
// user_id ไม่สามารถเป็น null ได้
allowNull: false,
// เพื่อระบุตัวตนผู้ใช้อย่างเดียว
primaryKey: true
},
// ชื่อคอลัมน์ #2: name
name: { type: Sequelize.STRING, allowNull: false },
// ชื่อคอลัมน์ #3: email
email: { type: Sequelize.STRING, allowNull: false },
// คอลัมน์: Timestamp
createdAt: Sequelize.DATE,
updatedAt: Sequelize.DATE,
})
module.exports = User
กำหนดค่า app.js
ในการสร้างโมเดล เราสามารถใช้เมธอดได้ 2 วิธี:
เมธอด sync() - สร้างโมเดลก็ต่อเมื่อไม่มีอยู่แล้ว หากโมเดลมีอยู่แล้ว จะไม่เขียนทับ
เมธอด sync({force: true}) - จะสร้างโมเดลใหม่หากไม่มีอยู่ แต่หากมีอยู่แล้ว จะเขียนทับโมเดลเดิม
// นำเข้าโมเดลฐานข้อมูล
const sequelize = require('./database')
// นำเข้าโมเดลผู้ใช้
const User = require('./user')
// สร้างตารางทั้งหมดที่กำหนดใน user
sequelize.sync()
// คุณสามารถเปลี่ยนไฟล์ user.js
// และรันโค้ดนี้เพื่อตรวจสอบว่ามันเขียนทับโค้ดเดิมหรือไม่
sequelize.sync({force: true})
ผลลัพธ์
เมื่อรันโปรแกรมข้างต้น คุณจะได้ผลลัพธ์ดังนี้ -
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`
ตอนนี้คุณสามารถตรวจสอบฐานข้อมูลได้ ตารางดังกล่าวจะถูกสร้างขึ้นแล้ว