عملیات CRUD در مونگو دی بی توسط نود جی اس

عملیات CRUD در مونگو دی بی توسط نود جی اس

عملیات CRUD در مونگو دی بی توسط نود جی اس

CRUD in mongodb With Node js

توسط : admin
در این آموزش به صورت ابتدایی 4 عمل اصلی شامل درج رکورد جدید ، ویرایش رکورد و همچنین حذف و دریافت رکورد یا رکوردهای درج شده در دیتا بیس مونگو دیبی با استفاده از Node js رو با هم بررسی میکنیم .

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

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

ما برای این آموزش طبق معمول از محیط ویژوال استادیو کد به همراه Node js  گرامی استفاده میکنیم . همچنین برای اجرای سرویس ها از Postman استفاده میشه .

بیاید شروع کنیم

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

npm init

 

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

npm i init

 

برای ایجاد اتصال به دیتا بیس مونگو دی بی از طریق ماژول mongoose اقدام میکنیم . بگذارید اول ماژول های مورد استفاده رو از طریق دستور زیر نصب کنید .

npm i mongoose express body-parser

 

 

قدم بعدی نوشتن کدهای ارتباط با مونگو دی بی :

فایلی با نام mongoose.js ایجاد کنید و دستورات زیر رو در این فایل قرار بدید.

 


 

const mongoose = require("mongoose");
const fs = require("fs");

const connectionString = "mongodb://localhost:27017/test-db";
//const connectionString = "mongodb://username:password@domainname:27017/yourdatabasename";
mongoose.Promise = global.Promise;
mongoose
  .connect(connectionString, {
    useNewUrlParser: true,
    useFindAndModify: false,
    reconnectTries: Number.MAX_VALUE,
    reconnectInterval: 1000,
    useCreateIndex: true
  })
  .then(() => {
    fs.writeFile("message.txt", "connected success", err => {
      if (err) throw err;
      console.log("The file has been saved!");
    });
  })
  .catch(ex => {
    fs.writeFile("error.txt", "connected un success", err => {
      if (err) throw err;
      console.log("The file has been saved!");
    });
  });
module.exports = {
  mongoose
};

 

شرح کد :

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

کانکشن دوم رو برای این گذاشتم که با نحوه اتصال به مونگو دی بی در فضای اینترنت آشنا بشید . روی سیستم لوکال میتونید بدون استفاده از نام کاربری و رمز عبور به پایگاه متصل بشید .

 

دستور زیر به مونگو دی بی میگه که از Promise ها استفاده کنه .

mongoose.Promise = global.Promise;

 

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

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

این دستورات میگن که  هر 1 ثانیه به تعداد بالاترین عدد در جاوااسکریپت ، تلاش کن تا وصل بشی .و در نهایت اگر اتصال موفقیت آمیز باشه یک فایل با نام message.txt ایجاد میکنه و در غیر اینصورت فایلی با نام error.txt ایجاد میشه .

 reconnectTries: Number.MAX_VALUE,
 reconnectInterval: 1000,

 

فایل بعدی ما contact.js هست که به طور مثال قرار هست در فرم تماس با ما از اون استفاده بشه . اطلاعات زیر رو در این فایل قرار بدید . اینجا ما یک مدل یا schema از سندی که قرار هست اطلاعات تماس با ما رو در اسناد نگه داری کنه ایجاد میکنیم . تنظیماتی هم برای هر فیلد وجود داره که شامل نوع فیلد ، حداقل و حداکثر طول کاراکتر ، الزامی بودن و مقدار پیش فرض هستند . همچنین تنظیمات دیگری هم که در آینده در موردشون حتما صحبت میکنیم

const { mongoose } = require("./mongoose");

let contactSchema = new mongoose.Schema({
  email: {
    type: String,
    minlength: 5,
    maxlength: 255,
    required: true
  },
  title: {
    type: String,
    minlength: 5,
    maxlength: 150,
    required: true
  },
  comment: {
    type: String,
    minlength: 5,
    maxlength: 500,
    required: true
  },
  insertDate: {
    type: Date,
    default: new Date()
  }
});

let Contact = mongoose.model("Contacts", contactSchema);

module.exports = {
  Contact
};

 

خوب رسیدیم به مرحله آخر :

حالا در فایل اصلی و اجرایی برنامه کد های زیر رو قرار بدید .

const express = require("express");
const http = require("http");
const app = express();
const bodyParser = require("body-parser");
app.use(bodyParser.json());
const { Contact } = require("./contact");

app.post("/addContact", async (req, res) => {
  const contact = new Contact(req.body);
  contact
    .save()
    .then(() => {
      res.status(200).send("پیام جدید ثبت شد");
    })
    .catch(error => {
      console.log(error);
      res.status(400).send("عملیات ثبت انجام نشد");
    });
});

app.post("/updatecontact1", async (req, res) => {
  const id = req.query.id;
  const contact = await Contact.findById(id);
  if (!contact) return res.status(400).send("نظر یافت نشد");
  contact.insertDate = new Date();
  contact
    .save()
    .then(() => {
      res.status(200).send("پیام ویرایش شد");
    })
    .catch(error => {
      console.log(error);
      res.status(400).send("عملیات ویرایش انجام نشد");
    });
});

app.post("/updatecontact2", async (req, res) => {
  const id = req.query.id;
  await Contact.findByIdAndUpdate(
    id,
    {
      insertDate: new Date()
    },
    (err, result) => {
      if (err) {
        res.status(400).send("عملیات ویرایش انجام نشد");
        return;
      }
      if (result === null) {
        return res.status(400).send("رکورد یافت نشد");
      }

      res.status(200).send("پیام ویرایش شد");
    }
  );
});

app.get("/getcontact", async (req, res) => {
  const id = req.query.id;
  const contact = await Contact.findById(id);
  if (!contact) return res.status(400).send("نظر یافت نشد");
  res.status(200).send(contact);
});

app.get("/getcontacts", async (req, res) => {
  const contacts = await Contact.find();
  res.status(200).send(contacts);
});

app.get("/removecontact", async (req, res) => {
  const id = req.query.id;
  await Contact.findByIdAndRemove(id, (err, result) => {
    if (err) {
      return res.status(400).send("نظر یافت نشد");
    }
    if (result === null) {
      return res.status(400).send("رکورد یافت نشد");
    }
    res.status(200).send("رکورد با موفقیت حذف شد");
  });
});

app.get("/getcontacts", async (req, res) => {
  const contacts = await Contact.find();
  res.status(200).send(contacts);
});

const server = http.createServer(app);

server.listen(4000, () => {
  console.log("server running on port 4000");
});

 

تعداد 6 سرویس  ایجاد کردیم که به ترتیب :

  1. addContact : درج رکورد
  2. pdatecontact1 : ویرایش رکورد به روش اول
  3. updatecontact2 : ویرایش رکورد به روش دوم
  4. getcontact :  دریافت یک رکورد با id
  5. getcontacts: دریافت همه رکوردهای این مجموعه
  6. removecontact : حذف رکورد با id

نحوه عملکرد کدها در هر سرویس مشخص هست . فقط جهت ارسال مقدار از طریق Post man برای تست رو در تصاویر زیر قرار میدم  


 

ارسال دستور ایجاد رکورد در مونگو دی بی توسط پست من به نود جی اس
نوع ارسال با توجه به سرویس باشد : در اینجا نوع ارسال post است

 

فراموش نکنید هر مقداری رو که قصد دارید به صورت json در بدنه درخواست به سمت سرور ارسال و در اونجا دریافت کنید مشابه قسمت های علامت گذاری شده تنظیمات رو انجام بدید .

و تنظیمات در تصویر بعدی برای متدهای ویرایش و حذف یکسان است .

دریافت رکورد، ویرایش و حذف  در مونگو دی بی توسط postman

 

در نهایت برای دریافت لیست تمامی رکورد ها رو میتونید در خروجی مشاهده کنید .

خروجی رکورد های یک کالکشن توسط postman در نود جی اس

 

بسیار عالی بود. ما در این مقاله به صورت بسیار مختصر عملیات اصلی بر روی پایگاه داده مونگو دی بی رو بررسی کردیم . در آموزشهای بعدی حتما مباحث پیشرفته تر از این پایگاه داده رو برای شما آموزش خواهم داد . خوشحالم از اینکه من رو در این آموزش همراهی کردید . شما دوستان گلم میتونید فایل این پروژه رو از اینجا دانلود کنید . طبق طوال همیشه دستور npm i برای نصب ماژول ها فراموش نشه . رمز فایل  nilootech.com هست .

نظرات :

در عرض چند دقیقه برای ایجاد حساب

کاربری خود اقدام کنید


اکنون حساب کاربری خود را ایجاد کنید!


ایجاد حساب کاربری

با ثبت نام در نیلوتک از آخرین بروز رسانی های آموزش ها و مقالات سایت مطلع شوید