برنامه نویسی

آموزش مبتدیان برای عملیات CRUD در NodeJS و MongoDB

معرفی

عملیات CRUD مخفف Create، Read، Update و Delete است. این روش به شما امکان می دهد با داده های پایگاه داده MongoDB کار کنید.

با این چهار عملیات، می توانید داده ها را در MongoDB ایجاد، بخوانید، به روز کنید و حذف کنید.

MongoDB چیست؟

MongoDB یک راه حل قدرتمند و انعطاف پذیر برای رسیدگی به نیازهای داده های مدرن است. به عنوان یک پایگاه داده پیشرو NoSQL، MongoDB یک طراحی طرحواره پویا ارائه می دهد، که توسعه دهندگان را قادر می سازد تا داده ها را به گونه ای ذخیره و مدیریت کنند که به طور یکپارچه با الزامات برنامه های کاربردی معاصر هماهنگ باشد.

Nodejs چیست؟

Node.js یک محیط زمان اجرا است که به شما امکان می دهد جاوا اسکریپت را در سمت سرور اجرا کنید، نه فقط در مرورگر. این بر روی موتور جاوا اسکریپت V8 کروم ساخته شده است و آن را سریع و کارآمد می کند. با Node.js، می‌توانید برنامه‌های شبکه مقیاس‌پذیر را به راحتی با استفاده از یک زبان برنامه‌نویسی واحد برای کدهای مشتری و سمت سرور بسازید. این به ویژه برای مدیریت بسیاری از اتصالات همزمان و برنامه های بلادرنگ مانند سرورهای چت یا بازی های آنلاین خوب است.

پیش نیاز

  • Node.js را نصب کنید: اگر قبلاً این کار را نکرده اید، Node.js را از وب سایت رسمی دانلود و نصب کنید.

  • نصب MongoDB: MongoDB را روی دستگاه خود نصب کنید. دستورالعمل های موجود در وب سایت رسمی MongoDB را دنبال کنید.

مرحله 1: یک پروژه جدید را راه اندازی کنید

ویرایشگر کد مورد نظر خود (کد VS) و cd را در دایرکتوری که می خواهید پروژه را ایجاد کنید باز کنید، سپس دستور زیر را وارد کنید تا یک پروژه جدید ایجاد کنید.

npm init
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

سپس از دستور زیر برای نصب پکیج های لازم استفاده کنید.

 npm install express mongodb
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

برای اطمینان از اینکه همه چیز به درستی کار می کند، برای شروع برنامه، «serve»: «node index.js» را در زیر اسکریپت موجود در package.JSON اضافه کنید.

سرور express.js را ایجاد و آزمایش کنید

در دایرکتوری ریشه یک یک ایجاد کنید index.js فایل و کد زیر را در آن وارد کنید.

const express = require('express')
const app = express()

app.listen(3000, () =>{
    console.log('Server is running on port 3000')
});

app.get("https://dev.to/", (req, res) =>{
    res.send("Hello Node API")
})
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

در این کد، ما یک سرور اصلی Node.js با استفاده از فریم ورک Express ایجاد می‌کنیم که در پورت 3000 گوش می‌دهد. وقتی از URL ریشه (“https://dev.to/”) بازدید می‌کنید، با پیام “Hello Node” پاسخ می‌دهد. API”.

اکنون برنامه را با دستور 'npm run serve' اجرا کنید تا نتایج را مطابق شکل زیر مشاهده کنید.

توضیحات تصویر

برای تست اینکه آیا سرور کار می کند یا خیر، وارد شویدlocalhost:3000 در مرورگر و نتایج را مطابق شکل زیر مشاهده کنید.

توضیحات تصویر

ایجاد اتصال MongoDB

از mongodb دیدن کنید و به حساب خود وارد شوید یا اگر هنوز این کار را نکرده اید، یکی ایجاد کنید.

یک پروژه جدید ایجاد کنید. نامی برای آن بگذارید و روی «ایجاد پروژه» کلیک کنید.

توضیحات تصویر

روی دکمه Create کلیک کنید و سپس قالب رایگان m0 را انتخاب کنید. به پایین پیمایش کنید، به خوشه خود یک نام بدهید و روی ایجاد استقرار کلیک کنید.

توضیحات تصویر

توضیحات تصویر

در صفحه زیر، یک نام کاربری و رمز عبور برای خوشه خود وارد کنید. حتما رمز عبور را کپی یا به خاطر بسپارید. روی ایجاد کاربر پایگاه داده کلیک کنید.

پس از آن بر روی دکمه Choose a connection method کلیک کرده و Connect را انتخاب کنید
توضیحات تصویر از طریق درایورها، رشته اتصال را کپی کنید.

برای دسترسی به mongodb به یک وابستگی به نام mongoose نیاز داریم، پس حتما آن را نصب کنید npm i mongoose و آن را در بالای صفحه اضافه کنید index.js فایل const mongoose = require('mongoose');.

ایجاد یک db.js در دایرکتوری ریشه فایل کنید و کد زیر را با پسوردی که ایجاد کرده اید جایگزین کنید.

const mongoose = require('mongoose');

mongoose.connect("mongodb+srv://admindan:admin1234@crudbackend.5goqnqm.mongodb.net/?retryWrites=true&w=majority&appName=crudbackend")
.then(() => {
    console.log('Connected to the database');
})
.catch((error) => {
    console.log('Connection failed', error);
});

module.exports = mongoose;
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

وارد كردن const mongoose = require('./db'); در بالای index.js فایل

برای آزمایش اینکه آیا پایگاه داده در حال اتصال است، برنامه را اجرا کنید و باید نتایج را مطابق شکل زیر در ترمینال مشاهده کنید.

توضیحات تصویر

ایجاد توابع CRUD

اکنون که پایگاه داده خود را متصل کرده ایم، به مدلی برای ذخیره داده هایمان در mongodb نیاز داریم.

یک پوشه models در پوشه root ایجاد کنید، سپس یک فایل به نام product.model.js ایجاد کنید و کد زیر را در آن قرار دهید.

const mongoose = require("mongoose");

const ProductSchema = mongoose.Schema(
  {
    name: {
      type: String,
      required: [true, "Please enter product name"],
    },

    quantity: {
      type: Number,
      required: true,
      default: 0,
    },

    price: {
      type: Number,
      required: true,
      default: 0,
    },

    image: {
      type: String,
      required: false,
    },
  },
  {
    timestamps: true,
  }
);


const Product = mongoose.model("Product", ProductSchema);

module.exports = Product;
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

Create: تعریف تابعی برای درج داده در mongodb

ما در حال ایجاد یک تابع برای ذخیره داده ها در مجموعه MongoDB خود هستیم. یک پوشه کنترلرها در فهرست اصلی و یک فایل به نام product.controller.js در آن ایجاد کنید. کد زیر را در آن قرار دهید.

const Product = require("../models/product.model");

const getProducts = async (req, res) => {
  try {
    const products = await Product.find({});
    res.status(200).json(products);
  } catch (error) {
    res.status(500).json({ message: error.message });
  }
};

const getProduct = async (req, res) => {
  try {
    const { id } = req.params;
    const product = await Product.findById(id);
    res.status(200).json(product);
  } catch (error) {
    res.status(500).json({ message: error.message });
  }
};

const createProduct = async (req, res) => {
  try {
    const product = await Product.create(req.body);
    res.status(200).json(product);
  } catch (error) {
    res.status(500).json({ message: error.message });
  }
};

const updateProduct = async (req, res) => {
  try {
    const { id } = req.params;

    const product = await Product.findByIdAndUpdate(id, req.body);

    if (!product) {
      return res.status(404).json({ message: "Product not found" });
    }

    const updatedProduct = await Product.findById(id);
    res.status(200).json(updatedProduct);
  } catch (error) {
    res.status(500).json({ message: error.message });
  }
};

const deleteProduct = async (req, res) => {
  try {
    const { id } = req.params;

    const product = await Product.findByIdAndDelete(id);

    if (!product) {
      return res.status(404).json({ message: "Product not found" });
    }

    res.status(200).json({ message: "Product deleted successfully" });
  } catch (error) {
    res.status(500).json({ message: error.message });
  }
};

module.exports = {
  getProducts,
  getProduct,
  createProduct,
  updateProduct,
  deleteProduct,
};
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

در این کد، عملیات CRUD را برای مدل محصول خود تعریف می کنیم که شامل:

  • getProducts: همه محصولات را واکشی می کند.

  • getProduct: یک محصول را با شناسه آن واکشی می کند.

  • createProduct: یک محصول جدید با داده های ارائه شده ایجاد می کند.

  • updateProduct: یک محصول را با شناسه آن به روز می کند.

  • deleteProduct: یک محصول را با شناسه آن حذف می کند.

هر تابع خطاهای احتمالی را مدیریت می کند و پاسخ های HTTP مناسب را برمی گرداند.

مسیرها را تعریف کنید

یک پوشه routes در پوشه root ایجاد کنید و در آن product.route.js را ایجاد کنید. کد زیر را در آن وارد کنید.

const express = require("express");
const Product = require("../models/product.model.js");
const router = express.Router();
const {getProducts, getProduct, createProduct, updateProduct, deleteProduct} = require('../controllers/product.controller.js');


router.get("https://dev.to/", getProducts);
router.get("/:id", getProduct);

router.post("https://dev.to/", createProduct);

// update a product
router.put("/:id", updateProduct);

// delete a product
router.delete("/:id", deleteProduct);




module.exports = router;
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

در این کد، مسیرهای سریع را برای عملیات CRUD برای مدل محصول خود تنظیم می کنیم. ماژول های لازم را وارد می کند، یک روتر Express ایجاد می کند و مسیرهایی را برای:

واکشی همه محصولات (GET /).
واکشی یک محصول واحد با شناسه (GET /:id).
ایجاد یک محصول جدید (POST /).
به روز رسانی یک محصول با شناسه (PUT /:id).
حذف یک محصول با شناسه (DELETE /:id).

در نهایت، روتر را برای استفاده در برنامه اصلی صادر می کند.

تست API شما

اکنون که عملیات CRUD خود را ایجاد کردیم، بیایید آنها را آزمایش کنیم. ما قصد داریم از بی خوابی استفاده کنیم اگر آن را ندارید می توانید دانلود کنید و یک حساب کاربری ایجاد کنید.

مراحل ذکر شده در زیر را برای آزمایش عملیات ایجاد ( POST REQUEST) دنبال کنید.

  • Insomnia را باز کنید: برنامه Insomnia را اجرا کنید.

  • ایجاد یک درخواست جدید: برای ایجاد یک درخواست جدید، روی دکمه “+” کلیک کنید.

  • تنظیم نوع درخواست: از منوی کشویی کنار نام درخواست، «POST» را انتخاب کنید.

  • URL را وارد کنید: URL نقطه پایانی API خود را وارد کنید (http://localhost:3000/api/products)

  • Enter Request Body: روی تب “Body” کلیک کنید، “JSON” را انتخاب کنید و داده های JSON را که می خواهید ارسال کنید وارد کنید.

  • ارسال درخواست: برای ارسال درخواست به سرور، روی دکمه “ارسال” کلیک کنید.

  • مشاهده پاسخ: پاسخ سرور را در قسمت پایینی Insomnia بررسی کنید.

api برای ایجاد یک محصول در MongoDB موفقیت آمیز بود، همانطور که با وضعیت 200 ok در تصویر زیر نشان داده شده است، که نحوه عملکرد آن را نشان می دهد.

توضیحات تصویر

بنابراین، هنگام رفتن به پایگاه داده و انتخاب Browse Collection، باید بتوانید آیتم ایجاد شده را مشاهده کنید.

توضیحات تصویر

تست عملیات Read

تکنیک آزمایش درخواست دریافت تقریباً همان چیزی است که در بالا بحث کردیم. شما یک درخواست جدید می کنید و از منوی کشویی GET را انتخاب می کنید.

توضیحات تصویر

دو گزینه آخر را امتحان کنید که عبارتند از به روز رسانی و حذف (PUT, DELETE) از منوی کشویی.

نتیجه

با این آموزش مبتدی، اکنون باید یک پایه محکم برای انجام عملیات CRUD با استفاده از NodeJS و MongoDB داشته باشید. برای اطلاعات بیشتر در زمینه فناوری، من را در X دنبال کنید و در لینکدین وصل شوید.

نوشته های مشابه

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

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

دکمه بازگشت به بالا