Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

สร้างตาราง MySQL ใน NodeJS ด้วย Sequelize


บทนำเกี่ยวกับ 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`

ตอนนี้คุณสามารถตรวจสอบฐานข้อมูลได้ ตารางดังกล่าวจะถูกสร้างขึ้นแล้ว