- ทำไมต้องใช้ฐานข้อมูล
- ฐานข้อมูล SQL ที่ไช้ได้ใน Node.js
2.1 Sequelize - ฐานข้อมูล NoSQL ใน Node.js
3.1 Mongoose - ทำอย่างง่ายด้วย Node.js และ MongoDB
Node.js กลายเป็นตัวเลือกยอดนิยมสำหรับนักพัฒนาเมื่อทำแอพฝั่งเซิร์ฟเวอร์ เนื่องจากประสิทธิภาพการทำงานที่มีประสิทธิภาพและการใช้งานที่ง่ายเป็นหลัก ส่วนสำคัญของแอปพลิเคชันเหล่านี้มักเกี่ยวข้องกับการโต้ตอบกับฐานข้อมูลเพื่อคงอยู่ จัดการ และดึงข้อมูล ในบทความนี้ เราจะมาดูกันว่า Node.js ทำงานร่วมกับทั้งฐานข้อมูล SQL และ NoSQL ได้อย่างไร โดยเน้นไปที่ PostgreSQL, MySQL และ MongoDB จากนั้นเราจะทำแอพง่ายๆ เพื่อนำทฤษฎีไปสู่การปฏิบัติ
1. ทำไมต้องใช้ฐานข้อมูล
ฐานข้อมูลคือระบบที่ช่วยให้สามารถจัดเก็บ จัดการ และเรียกใช้ข้อมูลได้ เป็นส่วนสำคัญของเว็บแอปพลิเคชันส่วนใหญ่และมาในสองรูปแบบหลัก ได้แก่ ฐานข้อมูล SQL (Structured Query Language) เช่น PostgreSQL และ MySQL และฐานข้อมูล NoSQL เช่น MongoDB แบบแรกใช้สคีมาและความสัมพันธ์ที่กำหนดไว้ล่วงหน้า ในขณะที่แบบหลังให้ความยืดหยุ่นมากกว่าด้วยโมเดลข้อมูลแบบไม่ใช้สคีมา
2. ฐานข้อมูล SQL ที่ไช้ได้ใน Node.js
เรามาพูดถึงฐานข้อมูล SQL กันก่อน SQL เป็นภาษาที่ใช้ในการสื่อสารและจัดการฐานข้อมูลที่เป็นไปตามแบบจำลองเชิงสัมพันธ์ PostgreSQL และ MySQL เป็นฐานข้อมูล SQL ที่ได้รับความนิยมเนื่องจากความทนทานและความน่าเชื่อถือ
Node.js สื่อสารกับฐานข้อมูล SQL โดยใช้โมดูลต่างๆ หนึ่งในความนิยมมากที่สุดคือ Sequelize ซึ่งเป็นไลบรารี Object-Relational Mapping (ORM) Sequelize นำเสนอสิ่งที่เป็นนามธรรมในระดับสูงที่สะดวกสบายบนฐานข้อมูล SQL ช่วยให้นักพัฒนาสามารถโต้ตอบกับฐานข้อมูลโดยใช้ JavaScript
2.1 Sequelize
ในการติดตั้ง Sequelize และไดรเวอร์ที่เกี่ยวข้องสำหรับฐานข้อมูล SQL ของคุณ ให้ใช้คำสั่ง npm ต่อไปนี้:
npm install --save sequelize
npm install --save pg pg-hstore # For PostgreSQL
npm install --save mysql2 # For MySQL
ด้วย Sequelize คุณสามารถกำหนดโมเดลที่สอดคล้องกับตารางฐานข้อมูลได้ โมเดลคือคลาสที่แมปกับข้อมูลในตาราง วิธีกำหนดUser
โมเดล มีดังนี้
const { Sequelize, DataTypes, Model } = require('sequelize');
const sequelize = new Sequelize('database', 'username', 'password', {
host: 'localhost',
dialect: /* one of 'mysql' | 'mariadb' | 'postgres' | 'mssql' */
});
class User extends Model {}
User.init({
// Model attributes are defined here
firstName: {
type: DataTypes.STRING,
allowNull: false
},
lastName: {
type: DataTypes.STRING
// allowNull defaults to true
}
}, {
sequelize,
modelName: 'User'
});
เมื่อกำหนดโมเดลแล้ว คุณสามารถดำเนินการ CRUD เช่นcreate
, read
, update
, และdelete
ด้วยวิธี JavaScript อย่างง่าย
3. ฐานข้อมูล NoSQL ใน Node.js
มาดูฐานข้อมูล NoSQL กัน MongoDB เป็นฐานข้อมูล NoSQL ยอดนิยมที่ใช้สำหรับความสามารถในการปรับขนาดและความยืดหยุ่น เหมาะอย่างยิ่งเมื่อต้องจัดการกับข้อมูลจำนวนมาก และเมื่อคุณต้องการความสามารถในการปรับสคีมาเมื่อเวลาผ่านไป
เช่นเดียวกับ Sequelize Node.js สื่อสารกับ MongoDB โดยใช้ไลบรารี Object-Document Mapper (ODM) ที่เรียกว่า Mongoose Mongoose อนุญาตให้นักพัฒนา Node.js กำหนดออบเจกต์ด้วยสคีมาที่เข้มงวดซึ่งแมปกับเอกสาร MongoDB
3.1 Mongoose
ในการติดตั้ง Mongoose ให้ใช้คำสั่ง npm ต่อไปนี้:
npm install --save mongoose
ด้วย Mongoose คุณสามารถกำหนดโมเดลที่สอดคล้องกับคอลเลกชันใน MongoDB วิธีกำหนด User
โมเดล มีดังนี้
const mongoose = require('mongoose');
const { Schema } = mongoose;
const userSchema = new Schema({
firstName: String,
lastName: String
});
const User = mongoose.model('User', userSchema);
เช่นเดียวกับ Sequelize เมื่อกำหนดโมเดล Mongoose แล้ว คุณสามารถดำเนินการ CRUD โดยใช้วิธี JavaScript อย่างง่าย
4. ทำอย่างง่ายด้วย Node.js และ MongoDB
เพื่อสาธิตวิธีรวม Node.js กับฐานข้อมูล มาทำแอพอย่างง่ายโดยใช้ Node.js, Express.js และ MongoDB
การตั้งค่าโครงการ
ขั้นแรก เริ่มต้นโครงการ Node.js ใหม่ และติดตั้งการอ้างอิงที่จำเป็น:
npm init -y
npm install express mongoose
จากนั้นตั้งค่าเซิร์ฟเวอร์ Express อย่างง่ายในserver.js
ไฟล์:
const express = require('express');
const mongoose = require('mongoose');
const app = express();
app.use(express.json());
// Database connection
mongoose.connect('mongodb://localhost:27017/test', { useNewUrlParser: true, useUnifiedTopology: true });
// Check if the connection is successful
const db = mongoose.connection;
db.on('error', console.error.bind(console, 'connection error:'));
db.once('open', function() {
console.log('Connected to the database');
});
// Start the server
app.listen(3000, () => {
console.log('Server is running on port 3000');
});
การกำหนดโมเดล
ตอนนี้มากำหนดUser
โมเดลในmodels/User.js
ไฟล์:
const mongoose = require('mongoose');
const userSchema = new mongoose.Schema({
name: String,
email: String,
password: String
});
module.exports = mongoose.model('User', userSchema);
การสร้างเส้นทาง (Routes)
หลังจากกำหนดโมเดลแล้ว ให้สร้างเส้นทางเพื่อจัดการการดำเนินการที่เกี่ยวข้องกับผู้ใช้ สำหรับตัวอย่างนี้ เราจะตั้งค่าสองเส้นทาง: เส้นทางหนึ่งสำหรับสร้างผู้ใช้ใหม่และอีกเส้นทางหนึ่งสำหรับการดึงข้อมูลผู้ใช้ทั้งหมด เส้นทางเหล่านี้จะอยู่ในไฟล์ routes/userRoutes.js
:
const express = require('express');
const User = require('../models/User');
const router = express.Router();
router.post('/new', async (req, res) => {
try {
const user = new User(req.body);
await user.save();
res.status(200).json(user);
} catch (error) {
res.status(500).json({ error: error.message });
}
});
router.get('/', async (req, res) => {
try {
const users = await User.find();
res.status(200).json(users);
} catch (error) {
res.status(500).json({ error: error.message });
}
});
module.exports = router;
การใช้เส้นทาง (Routes)
สุดท้าย นำเข้าและใช้เส้นทางใน server.js
ไฟล์:
const userRoutes = require('./routes/userRoutes');
app.use('/users', userRoutes);
ตอนนี้แอปพลิเคชันพร้อมแล้ว คุณสามารถเริ่มเซิร์ฟเวอร์ด้วยnode server.js
และใช้เครื่องมือทดสอบ API เช่น Postman เพื่อทดสอบจุดสิ้นสุด
แอปพลิเคชันที่เรียบง่ายนี้ให้ความเข้าใจพื้นฐานเกี่ยวกับวิธีที่ Node.js โต้ตอบกับฐานข้อมูล NoSQL เช่น MongoDB จากที่นี่ คุณสามารถสำรวจคุณลักษณะเพิ่มเติม เช่น การตรวจสอบความถูกต้อง การสอบถามที่ซับซ้อน และอื่นๆ
ฐานข้อมูลเป็นส่วนสำคัญของแอปพลิเคชันแบ็คเอนด์ และ Node.js ให้การสนับสนุนที่ยอดเยี่ยมสำหรับทั้งฐานข้อมูล SQL และ NoSQL ต้องขอบคุณไลบรารีอย่าง Sequelize และ Mongoose เมื่อเข้าใจวิธีการทำงานของไลบรารีเหล่านี้และวิธีที่สามารถใช้โต้ตอบกับฐานข้อมูลได้ คุณจะสามารถทำแอพที่ซับซ้อนและมีประสิทธิภาพมากขึ้นได้