آموزش Nodejs

آموزش کار با MySQL در Node.js

دیتابیس MySQL در Node.js

آموزش کار با MySQL در Node.js، در این مطلب کار با دیتابیس MySQL رو از طریق پلتفرم محبوب Node.js یاد خواهیم گرفت.

نکته اینکه در این مطلب آموزش XAMPP و MySQL ارائه نمیشه و فرض بر این هست که شما حداقل دانش برای کار با آنها رو دارید.

 

آموزش استفاده از دیتابیس MySQL در Node.js

آموزش استفاده از دیتابیس MySQL در Node.js

همانطور که می دونید Node رابطه نزدیکی با MongoDB داره اما خیلی از توسعه دهندگان دیتابیس های NoSQL رو نمی پسندند.

به لطف ماژول های تولید شده برای اپ های Node.js می توانیم با دیتابیس های مختلف کار کنیم.

در اینجا MySQL رو انتخاب کردم به خاطر اینکه علاوه بر قدرتمند بودنش کار باهاش خیلی ساده رو روان هست. همچنین بر خلاف SQL Server شما نیازی به یک سیستم قدرتمند جهت اجرا و مدیریت ندارید.

بریم کار رو با مثال شروع کنیم…

در ابتدا نیاز هست یک پروژه Node.js ایجاد کنیم، به همین منظور یک فولدر در درایوی که مدنظر دارید ایجاد و اون رو با VSCode باز کنید.

در ترمینال دستور زیر رو وارد کنید:

				
					npm init
				
			

نیازی به پاسخ دادن به سوالاتی که بعد از وارد کردن این دستور میپرسه نیست همه رو اینتر بزنید و رد کنید.

حالا با استفاده از دستور زیر وب فریم ورک Express، ماژول MySQL و همچنین ماژول nodemon رو در نصب می کنیم:

				
					npm i --save mysql express
npm i -g nodemon
				
			

از ماژول nodemon برا اینکه مجبور نباشیم مرتب بعد از هر تغییری پروژه رو اجرا کنیم استفاده می کنیم، این ماژول پروژه رو به صورت RealTime در حالت اجرا نگه می داره و با ایجاد هر تغییری در کدینگ اون تغییر در همان لحظه اعمال می شود.

برای کار با MySQL در ویندوز من از XAMPP استفاده می کنم، اگر روی سیستم نداریدش از اینجا می تونید دانلود و نصبش کنید.

من یک جدول با مشخصات تصویر زیر ایجاد کردم که شما هم می تونید جدولتون رو بر اساس همین مثال در phpmyadmin برنامه XAMPP ایجاد کنید.

جدول Posts در MySQL

جدول Posts در MySQL

 

تا اینجا مقدمات و ابزارهای مورد نیاز پروژه رو آماده و نصب کردیم. حالا بریم سراغ ایجاد فایل و کدنویسی.

یک فایل با نام app.js ایجاد کنید، ما در این پروژه تنها همین یک فایل رو داریم و تمام کدهای موردنیازمون رو در این فایل می نویسیم.

 

اتصال MySQL به Node.js

برای connect کردن پایگاه داده ای که ایجاد کردیم و همچنین استفاده از express باید در ابتدا آنها رو به فایل خودمون از طریق دستور require اضافه و در ادامه دستورات مربوطه رو به شکل زیر بنویسیم:

				
					const express = require("express");
const mysql = require("mysql");
const app = express();

// Create Connection
const db = mysql.createConnection({
  host: "localhost",
  user: "root",
  password: "",
  database: "nodemysql",
});

// Connect
db.connect((err) => {
  if (err) {
    throw err;
  }
  console.log("Mysql Connected");
});
				
			

حالا برنامه رو با استفاده از nodemon اجرا کنید(در ترمنیال وارد کنید nodemon).
اگر همه چیز رو به درستی انجام داده باشید پیام “Mysql Connected” رو مشاهده خواهید کرد.

 

اضافه کردن اطلاعات به MySQL در Node.js

جدول “posts” ما که در دیتابیس “nodemysql” ایجاد کردیم محتوایی نداره، در این قسمت می خوایم با استفاده از کوئری insert محتوایی رو به جدول خودمون اضافه کنیم، برای این کار از دستورات زیر استفاده می کنیم:

				
					// Insert Post 1
app.get("/addpost1", (req, res) => {
  let post = { title: "Post One", body: "This is a text for post number one" };
  let sql = "INSERT INTO posts SET ?";
  let query = db.query(sql, post, (err, result) => {
    if (err) throw err;
    console.log(result);
    res.send("Post 1 added...");
  });
});

// Insert Post 2
app.get("/addpost2", (req, res) => {
  let post = { title: "Post Two", body: "This is a text for post number Two" };
  let sql = "INSERT INTO posts SET ?";
  let query = db.query(sql, post, (err, result) => {
    if (err) throw err;
    console.log(result);
    res.send("Post 2 added...");
  });
});
				
			

اگر یکی آدرس های زیر رو در مرورگر خود وارد کنید مقادیری که در متغیر post قرار گرفتند به جدول ما اضافه می شوند.

				
					http://localhost:3000/addpost1
,
http://localhost:3000/addpost2
				
			
کوئری insert در MySQL

کوئری insert در MySQL

اگر یکی آدرس های زیر رو در مرورگر خود وارد کنید مقادیری که در متغیر post قرار گرفتند به جدول ما اضافه می شوند.

 

دریافت اطلاعات از MySQL در Node.js

اطلاعات معمولا به دو شکل گروهی و تکی از جداول دیتابیس واکشی می شوند. برای این منظور از کوئری Select به شکل زیر استفاده می کنیم:

				
					// Get All Data
app.get("/getdata", (req, res) => {
  let sql = "SELECT * FROM posts";
  let query = db.query(sql, (err, results) => {
    if (err) throw err;
    console.log(results);
    res.send("Posts Fetched...");
  });
});

// Get Single Data
app.get("/getdata/:id", (req, res) => {
  let sql = `SELECT * FROM posts WHERE id = ${req.params.id}`;
  let query = db.query(sql, (err, result) => {
    if (err) throw err;
    console.log(result);
    res.send("Post Fetched...");
  });
});
				
			

قسمت اول که از کد خط 2 شروع میشه تمام اطلاعات جدول رو select کردم.

در قسمت دوم (کد خط 12) داده های جدول رو بر اساس شناسه یا id وارد شده کاربر واکشی کردم. استفاده از روت های داینامیک در این پردازش به کمک می کنند، اکر روت یا مسیرهای داینامیک در Node.js آشنا نیستید این مقاله رو مطالعه بفرمایید.

با استفاده از آدرس زیر من رکورد اطلاعات با شناسه 2 رو درخواست کردم.

				
					http://localhost:3000/getdata/2
				
			
کوئری select و روت های داینامیک در node.js

کوئری select و روت های داینامیک در node.js

 

ویرایش اطلاعات در MySQL با Node.js

برای ویرایش یا بروزرسانی داده های جداول MySQL از کوئری Update به شکل زیر استفاده می کنیم.

				
					// Update Post
app.get("/updatepost/:id", (req, res) => {
  let newTitle = "Updated Title";
  let sql = `UPDATE posts SET title = '${newTitle}' WHERE id = ${req.params.id}`;
  let query = db.query(sql, (err, result) => {
    if (err) throw err;
    console.log(result);
    res.send("Post Updated...");
  });
});
				
			

در این مثال من ابتدا شناسه یا id رکوردی رو که می خواهم تغییرات درونش بدم رو از آدرس مرورگر توسط روت داینامیک می گیرم و بر اساس اون فیلد موردنظرم رو update می کنم.

در اینجا اطلاعات ستون title مربوط به شناسه دوم رو برورسانی کردیم به محتوایی که در متغیر “newTitle” قرار گرفته است.

 

حذف اطلاعات از MySQL در Node.js

برای حذف داده های در جداول MySQL از کوئری Delete به شکل زیر استفاده می کنیم.

				
					// Delete Post
app.get("/deletepost/:id", (req, res) => {
  let sql = `DELETE FROM posts WHERE id = ${req.params.id}`;
  let query = db.query(sql, (err, result) => {
    if (err) throw err;
    console.log(result);
    res.send("Post Deleted...");
  });
});
				
			

برای استفاده از کوئری delete باید مراقب باشیم و علاوه بر داشتن نسخه پشتیبان بروز، همیشه از where در کوئری استفاده کنیم در غیر این صورت با یک اشتباه اطلاعات ما از جدول دیتابیس برای همیشه حذف خواهد شد.

در کدهای فوق شناسه رکوردی رو که می خوام حذف بشه رو از آدرس مرورگر که توسط کاربر دریافت میشه رو می گیرم بر اساس اون رکورد موردنظر رو حذف می کنم.

 

در نهایت کدهای فایل app.js ما به شکل زیر خواهد بود:

				
					// app.js
const express = require("express");
const mysql = require("mysql");
const app = express();

// Create Connection
const db = mysql.createConnection({
  host: "localhost",
  user: "root",
  password: "",
  database: "nodemysql",
});

// Connect
db.connect((err) => {
  if (err) {
    throw err;
  }
  console.log("Mysql Connected");
});

// Insert Post 1
app.get("/addpost1", (req, res) => {
  let post = { title: "Post One", body: "This is a text for post number one" };
  let sql = "INSERT INTO posts SET ?";
  let query = db.query(sql, post, (err, result) => {
    if (err) throw err;
    console.log(result);
    res.send("Post 1 added...");
  });
});

// Insert Post 2
app.get("/addpost2", (req, res) => {
  let post = { title: "Post Two", body: "This is a text for post number Two" };
  let sql = "INSERT INTO posts SET ?";
  let query = db.query(sql, post, (err, result) => {
    if (err) throw err;
    console.log(result);
    res.send("Post 2 added...");
  });
});

// Get All Data
app.get("/getdata", (req, res) => {
  let sql = "SELECT * FROM posts";
  let query = db.query(sql, (err, results) => {
    if (err) throw err;
    console.log(results);
    res.send("Posts Fetched...");
  });
});

// Get Single Data
app.get("/getdata/:id", (req, res) => {
  let sql = `SELECT * FROM posts WHERE id = ${req.params.id}`;
  let query = db.query(sql, (err, result) => {
    if (err) throw err;
    console.log(result);
    res.send("Post Fetched...");
  });
});

// Update Post
app.get("/updatepost/:id", (req, res) => {
  let newTitle = "Updated Title";
  let sql = `UPDATE posts SET title = '${newTitle}' WHERE id = ${req.params.id}`;
  let query = db.query(sql, (err, result) => {
    if (err) throw err;
    console.log(result);
    res.send("Post Updated...");
  });
});

// Delete Post
app.get("/deletepost/:id", (req, res) => {
  let sql = `DELETE FROM posts WHERE id = ${req.params.id}`;
  let query = db.query(sql, (err, result) => {
    if (err) throw err;
    console.log(result);
    res.send("Post Deleted...");
  });
});

app.listen("3000", () => {
  console.log("Server Started on port 3000");
});

				
			

دانلود پروژه

 

جمع بندی

در این مقاله سعی کردم نحوه استفاده از MySQL و کوئری های پرکاربردش در Node.js رو توضیح بدم، امیدوارم این مطلب براتون مفید واقع شده باشه.

اگر نظر و پیشنهادی در خصوص مطالب و پیشبرد آنها دارید خوشحال میشم در قسمت دیدگاه ها مطرح بفرمایید.

———————————————–

آموزش های طراحی و برنامه نویسی وب

سایت رسمی ReactJS

کاربرد HTML

 jQuery

جاوا اسکریپت در 1 ساعت

کاربرد CSS

آموزش ReactJS

صفر تا صد PHP

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *