خبر و ترفند روز

خبر و ترفند های روز را اینجا بخوانید!

نحوه استفاده از Mongoose در برنامه های اکسپرس

برنامه Node.js خود را با پایگاه داده MongoDB با استفاده از Mongoose ادغام کنید.

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

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

تنظیم محیط توسعه شما

قبل از استفاده از Mongoose، باید آن را به عنوان یک وابستگی در پروژه خود نصب کنید.

با اجرای دستور زیر می توانید Mongoose را نصب کنید:

npm install mongoose

پس از نصب Mongoose در پروژه خود، باید برنامه خود را با استفاده از Mongoose به MongoDB متصل کنید.

Mongoose با استفاده از روش اتصال به پایگاه داده MongoDB متصل می شود که یک URI MongoDB را به عنوان آرگومان می گیرد.

در اینجا یک مثال است:

// index.js
const mongoose = require("mongoose")

mongoose.connect("mongodb://127.0.0.1:27017/example", () =>
  console.log("Connected to database successfully")
);

بلوک کد بالا به یک نمونه MongoDB محلی متصل می شود و هنگامی که برنامه شما با موفقیت به MongoDB متصل شد، یک پیام موفقیت آمیز ثبت می کند.

ایجاد یک مدل Mongoose

یک مدل Mongoose یک کلاس مبتنی بر طرحواره در Mongoose است که به شما امکان می دهد با مجموعه MongoDB تعامل داشته باشید.

طرحواره Mongoose ساختار اسنادی را که می توانید در مجموعه MongoDB ذخیره کنید تعریف می کند و یک رابط برای ایجاد، خواندن، به روز رسانی و حذف اسناد در آن مجموعه ارائه می دهد.

هنگامی که یک مدل Mongoose را تعریف می‌کنید، طرحی را برای اسناد موجود در آن مجموعه، از جمله ویژگی‌ها، انواع آنها و هرگونه اعتبارسنجی تعریف می‌کنید.

در اینجا نمونه ای از مدل Mongoose برای مجموعه کاربران آورده شده است:

const mongoose = require("mongoose");

const userSchema = mongoose.Schema({
  name: {
    type: String,
    required: [true, "Name is required"],
  },
  email: {
    type: String,
    required: true,
  },
  age: {
    type: Number,
    validate: {
      validator: function (value) {
        return value > 0;
      },
      message: () => "Please enter a valid age",
    },
  },
});

const User = mongoose.model("User", userSchema);

module.exports = User;

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

  • name: ویژگی name یک نوع رشته ای است که به صورت الزامی مشخص شده است، به این معنی که باید یک رشته را به این فیلد نگاشت کنید. اگر فیلد را خالی بگذارید یا نوع داده جاوا اسکریپت دیگری را وارد کنید، Mongoose خطا می دهد.
  • email: خاصیت ایمیل یک نوع رشته است که به عنوان مورد نیاز علامت گذاری شده است. هیچ قانون اعتبار سنجی دیگری ندارد، اما در عمل، اگر ایمیل درست است، باید اعتبارسنجی کنید. می‌توانید ایمیل را با استفاده از عبارت‌های regex یا کتابخانه‌های شخص ثالث، مانند class-validator تأیید کنید.
  • age: ویژگی age یک نوع عدد با یک قانون اعتبارسنجی سفارشی است که بررسی می‌کند آیا مقدار نگاشت شده به فیلد بزرگتر از صفر است یا خیر. اگر مقدار از اعتبارسنجی عبور نکند، Mongoose با پیغام Please enter a valid سن خطایی می دهد. می توانید این فیلد را خالی بگذارید زیرا به عنوان مورد نیاز علامت گذاری نشده است.
مطلب مرتبط:   5 جایگزین برای Express.js

پس از تعریف طرحواره، بلوک کد یک مدل Mongoose به نام User با استفاده از متد ()mongoose.model ایجاد می کند. این روش دو آرگومان دارد: نام مدل و طرحواره برای استفاده از اسناد.

در نهایت مدل User به قسمت های دیگر برنامه شما صادر می شود.

تعامل با MongoDB با استفاده از Mongoose

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

برای این آموزش، عملیات CRUD را روی پایگاه داده MongoDB انجام خواهید داد.

توجه: مطمئن شوید که مدل Mongoose خود را به هر ماژولی که در آن عملیات CRUD را انجام می دهید وارد کنید.

مثلا:

// router.js

const User = require("./userModel")

ایجاد یک سند

سند نمونه ای از یک مدل است. راه های مختلفی وجود دارد که می توانید با استفاده از Mongoose یک سند را در MongoDB ایجاد و ذخیره کنید.

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

مثلا:

//Creating a new user
let user = new User({
  name,
  email,
  age,
});

//Saving user to database
user
  .save()
  .then(() => {
    console.log("User created successfully");
  })
  .catch((error) => {
    //handle error
  });

بلوک کد بالا یک سند کاربر جدید را در پایگاه داده MongoDB شما ایجاد و ذخیره می کند.

همچنین می توانید داده ها را با استفاده از روش ایجاد در پایگاه داده خود ذخیره کنید. متد create مدل شما را نمونه سازی می کند و متد ذخیره را روی آن فراخوانی می کند. به ترتیب کلمات، دو عملیات تکنیک ذکر شده قبلی را ترکیب می کند.

مطلب مرتبط:   نحوه پیاده سازی جلوه های صوتی و موسیقی پس زمینه در گودو

مثلا:

User.create({ name, email, age }, (err, data) => {
    if (err) throw new Error("Internal Server Error");

    console.log(`User created successfully: ${data}`);
  });

بلوک کد بالا یک سند کاربر جدید با ویژگی های ارسال شده به عنوان آرگومان به متد ایجاد ایجاد می کند.

همچنین، می توانید داده ها را با استفاده از روش insertMany در پایگاه داده خود ذخیره کنید. اگرچه این روش فقط برای ذخیره داده ها به صورت دسته ای ایده آل است.

مثلا:

User.insertMany(
    [
      { name, email, age },
      { name_1, email_1, age_1 },
    ],
    (err, result) => {
      if (err) {
        //handle error
      } else {
        //Send results
      }
    }
  );

بلوک کد بالا دو سند جدید را در مجموعه User با استفاده از آرایه ارسال شده به عنوان آرگومان به متد insertMany ایجاد می کند.

خواندن یک سند

می توانید با استفاده از روش Mongoose’s find به تمام اسناد ذخیره شده در پایگاه داده MongoDB خود دسترسی داشته باشید.

مثلا:

User.find({})
  .then((data) => {
    console.log(data);
  })
  .catch((err) => {
    //handle error
  });

بلوک کد بالا تمام اسناد موجود در مجموعه User را برمی گرداند.

همچنین می توانید تمام اسنادی را که با یک پرس و جو خاص مطابقت دارند، با ارسال یک پرس و جو به روش Find پیدا کنید.

مثلا:

// find all documents where age is at least 18
User.find({ age: { $gte: 18 } })
  .then((data) => console.log(data))
  .catch((error) => console.log(error));

بلوک کد بالا همه اسنادی را با مقدار سنی بیشتر از 18 در مجموعه User برمی گرداند.

مطلب مرتبط:   رویه های ذخیره شده SQL چیست و چگونه آنها را ایجاد می کنید؟

همچنین، می‌توانید رکوردهای منفرد را با استفاده از متد findById بخوانید و شناسه سند را به عنوان آرگومان ارسال کنید یا از روش findOne استفاده کنید و فیلتر را به عنوان آرگومان ارسال کنید.

مثلا:

//findById
User.findById(id, (error, result) => {
    if (result) console.log(result);
    if (error) console.error(error)
  });

//findOne
User.findOne({ email: "johnson@example.com" }).then((user) => {
    if (!user) {
      //handle error
    }
    //send response
  });

در بلوک کد بالا، متد findById سند را با شناسه منطبق برمی گرداند. متد findOne اولین سند را با ایمیل johnson@example.com برمی گرداند.

به روز رسانی یک سند

با استفاده از روش findByIdAndUpdate می توانید یک سند را در MongoDB با Mongoose به روز کنید. این روش یک شناسه و یک شی با جزئیات به روز شده را می گیرد.

مثلا:

User.findByIdAndUpdate(id, req.body, (err, doc) => {
  if (doc) {
    //Send response
  }
  if (err) {
    //handle error
  }
});

بلوک کد بالا سند را با شناسه ای مطابق با شناسه ارائه شده با شی به روز رسانی ارائه شده (req.body) به روز می کند.

حذف یک سند

می توانید با استفاده از روش findByIdAndDelete یک سند را در MongoDB با Mongoose حذف کنید. این روش یک ID را به عنوان آرگومان می گیرد و سند را با شناسه مربوطه حذف می کند.

مثلا:

User.findByIdAndDelete(id, (error, result) => {
  if (result) {
    //Handle result
  }
  if (error) {
    //Handle error
  }
});

بلوک کد بالا یک سند با شناسه داده شده را از پایگاه داده MongoDB شما حذف می کند.

استفاده از Mongoose در برنامه های اکسپرس شما

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

با استفاده از Mongoose در برنامه های Express خود، می توانید تعاملات بین برنامه خود و پایگاه داده MongoDB را ساده و ساده کنید.