منگوز آبجیکٹ کو بتدریج کونیی میں لوڈ کریں: ایک ابتدائی دوستانہ نقطہ نظر

منگوز آبجیکٹ کو بتدریج کونیی میں لوڈ کریں: ایک ابتدائی دوستانہ نقطہ نظر
منگوز آبجیکٹ کو بتدریج کونیی میں لوڈ کریں: ایک ابتدائی دوستانہ نقطہ نظر

متحرک پوسٹ لوڈنگ کے ساتھ آپ کی کونیی ایپ کو بڑھانا

تصور کریں کہ آپ Angular کے ساتھ ایک بلاگ پلیٹ فارم بنا رہے ہیں، اور آپ صارف کو ایک ہموار تجربہ فراہم کرنا چاہتے ہیں۔ ابتدائی طور پر، آپ کا صفحہ صرف دس پوسٹس لوڈ کرتا ہے—ہر ایک کے لیے ایک عنوان اور ایک تصویر—لیکن جیسے ہی صارفین سکرول کرتے ہیں یا "مزید دکھائیں" پر کلک کرتے ہیں، تو وہ متحرک طور پر مزید پوسٹس حاصل کرتے ہیں۔ یہ انٹرفیس کو صاف اور جوابدہ رکھتا ہے۔ 📱

تاہم، اس طرح کے بڑھتے ہوئے ڈیٹا کی لوڈنگ کو سنبھالنا مشکل ہو سکتا ہے، خاص طور پر جب منگوز استعمال کر رہے ہوں۔ آپ اپنی ایپلیکیشن کو مغلوب کیے بغیر مزید ڈیٹا کیسے لوڈ کرتے ہیں؟ صرف `find()` کے ساتھ ایک ساتھ تمام پوسٹس کو بازیافت کرنا بڑے ڈیٹا سیٹس کے لیے قابل توسیع نہیں ہے۔ یہ وہ جگہ ہے جہاں سمارٹ ڈیٹا ہینڈلنگ، جیسے بیک اینڈ پر صفحہ بندی اور فرنٹ اینڈ پر مستقل رینڈرنگ کے ساتھ، زندگی بچانے والا بن جاتا ہے۔ 🔄

اس سے نمٹنے کے لیے، آپ کو موثر بیک اینڈ استفسار اور سوچ سمجھ کر فرنٹ اینڈ انضمام کے امتزاج کی ضرورت ہوگی۔ بیک اینڈ پر، آپ ٹکڑوں میں ڈیٹا حاصل کرنے کے لیے MongoDB اور Mongoose استعمال کریں گے۔ فرنٹ اینڈ پر، انگولر کے رد عمل والے اجزاء اس بات کو یقینی بناتے ہیں کہ پہلے سے بھری ہوئی پوسٹس نظر آتی رہیں جب کہ بغیر کسی رکاوٹ کے نئی پوسٹس شامل کی جائیں۔

اس مضمون میں، ہم اس خصوصیت کو مرحلہ وار لاگو کرنے کا طریقہ دریافت کریں گے۔ آخر تک، آپ کے پاس پوسٹس کو بتدریج لوڈ کرنے کے لیے ایک مضبوط حل ہوگا، جو آپ کے صارفین کو ایک ہموار اور پرکشش براؤزنگ کا تجربہ فراہم کرے گا۔ آئیے اندر غوطہ لگائیں! 🚀

حکم استعمال کی مثال
skip() دی skip() استفسار کے نتیجے میں دستاویزات کی ایک مخصوص تعداد کو چھوڑنے کے لیے مونگوز میں طریقہ استعمال کیا جاتا ہے۔ مثال کے طور پر، PostModel.find().skip(10) صفحہ بندی کے لیے مفید بناتے ہوئے، پہلی 10 پوسٹس کو چھوڑ دیتا ہے۔
limit() دی حد () طریقہ مونگوز کے استفسار کے ذریعہ واپس کی گئی دستاویزات کی تعداد کو محدود کرتا ہے۔ مثال: PostModel.find().limit(10) صرف 10 پوسٹس کو بازیافت کرتا ہے، ٹکڑوں میں پوسٹس لانے کے لیے مثالی۔
asyncHandler() ایکسپریس میں غیر مطابقت پذیر کوڈ کو سنبھالنے کے لیے ایک مڈل ویئر فنکشن ریپر۔ یہ یقینی بناتا ہے کہ غیر مطابقت پذیر راستوں میں غلطیاں پکڑی جاتی ہیں اور غلطی سے نمٹنے والے مڈل ویئر کو بھیجی جاتی ہیں۔ مثال: asyncHandler(async (req, res) =>asyncHandler(async (req, res) => { ... }).
sort() دی ترتیب دیں() طریقہ ایک مخصوص فیلڈ کی بنیاد پر استفسار کے نتائج کو ترتیب دیتا ہے۔ مثال: PostModel.find().sort({createdAt: 'decending' }) سب سے پہلے تازہ ترین کے حساب سے ترتیب دی گئی پوسٹس واپس کرتا ہے۔
Observable کونیی کی قابل مشاہدہ RxJS لائبریری سے غیر مطابقت پذیر ڈیٹا اسٹریمز کی اجازت دیتا ہے۔ مثال: this.http.get().subscribe(data =>this.http.get().subscribe(data => { ... }) صفحہ بندی API کالوں کو ہینڈل کرنے کے لیے۔
@Injectable کونیی کی @انجیکشن قابل ڈیکوریٹر کا استعمال کسی کلاس کو انحصار انجیکشن کے لیے دستیاب کے طور پر نشان زد کرنے کے لیے کیا جاتا ہے۔ مثال: @Injectable({ provideIn: 'root' }) عالمی سطح پر سروس کو رجسٹر کرتا ہے۔
supertest دی سپر ٹیسٹ لائبریری کو HTTP روٹس کو جانچنے کے لیے Node.js میں استعمال کیا جاتا ہے۔ مثال: درخواست (ایپ) حاصل کریں۔('/ پوسٹس')۔ توقع (200) اس بات کو یقینی بناتا ہے کہ راستہ 200 کی حیثیت واپس کرتا ہے۔
Array.from() جاوا اسکرپٹ Array.from() طریقہ دوبارہ قابل یا سرنی نما آبجیکٹ سے ایک نئی صف بناتا ہے۔ مثال: Array.from({ length: 10 }, (_, i) =>Array.from({ length: 10 }, (_, i) => i + 1) نمبر 1 سے 10 کی ایک صف بناتا ہے۔
jest مذاق جاوا اسکرپٹ ٹیسٹنگ فریم ورک ہے۔ مثال: describe('Test Suite', () => { it('test case', () =>بیان کریں ('ٹیسٹ سویٹ'، () => { it('ٹیسٹ کیس'، () => { ... }) }) یونٹ ٹیسٹ کو منظم اور چلاتا ہے۔
subscribe() دی سبسکرائب کریں() Angular میں طریقہ مشاہدہ کرنے والے سے ڈیٹا اسٹریمز کو سننے کے لیے استعمال کیا جاتا ہے۔ مثال: this.postService.getPosts().subscribe(data =>this.postService.getPosts().subscribe(data => { ... }) API کے جواب کو ہینڈل کرتا ہے۔

اضافی ڈیٹا لوڈنگ کے پیچھے میکانزم کو سمجھنا

اس حل میں، بیک اینڈ اور فرنٹ اینڈ اسکرپٹس متحرک طور پر پوسٹس کو لوڈ کرنے کے لیے ایک ہموار صارف کا تجربہ فراہم کرنے کے لیے مل کر کام کرتے ہیں۔ پسدید پر، API کا اختتامی نقطہ فائدہ اٹھاتا ہے۔ منگوز جیسے طریقے skip() اور حد () ڈیٹا کے مخصوص ٹکڑوں کو لانے کے لیے۔ مثال کے طور پر، جب صارف پہلے صفحہ کی درخواست کرتا ہے، تو API کوئی بھی نہیں چھوڑ کر اور نتیجہ کو دس تک محدود کرکے پہلی دس پوسٹس حاصل کرتا ہے۔ دوسرے صفحہ کے لیے، یہ پہلے دس کو چھوڑ دیتا ہے اور پوسٹس کا اگلا سیٹ لاتا ہے۔ یہ اس بات کو یقینی بناتا ہے کہ سرور کی کارکردگی کو بہتر بناتے ہوئے صرف مطلوبہ ڈیٹا سے ہی استفسار کیا جاتا ہے۔

فرنٹ اینڈ انگولر سروس موجودہ صفحہ اور حد کو پاس کرنے کے لیے `getPosts()` طریقہ استعمال کرتے ہوئے، HTTP کالز کے ذریعے بیک اینڈ کے ساتھ تعامل کرتی ہے۔ یہ ڈیزائن اسکیل ایبلٹی کی اجازت دیتا ہے، کیونکہ ایپ صرف ڈیٹا کے چھوٹے، قابل انتظام حصوں کی درخواست کرتی ہے۔ جیسے ہی صارفین سکرول کرتے ہیں یا "مزید لوڈ کریں" بٹن پر کلک کرتے ہیں، نئی پوسٹس کو پہلے سے بھری ہوئی پوسٹس کو مرئی رکھتے ہوئے، اجزاء کی حالت میں موجودہ فہرست میں شامل کیا جاتا ہے۔ یہ نقطہ نظر روایتی کا ایک متحرک متبادل ہے۔ صفحہ بندیجہاں صارفین صفحات کے درمیان تشریف لے جاتے ہیں۔ یہ سمجھے جانے والے لوڈ ٹائم کو کم کرکے صارف کی مصروفیت کو بڑھاتا ہے۔ 🚀

اسکرپٹس کو دوبارہ قابل استعمال بنانے کے لیے، ماڈیولرائزیشن کلیدی کردار ادا کرتی ہے۔ بیک اینڈ روٹس استفسار کے پیرامیٹرز کو ہینڈل کرنے کے لیے بنائے گئے ہیں، جس سے صفحہ کے سائز یا ترتیب کے معیار کو ایڈجسٹ کرنا آسان ہو جاتا ہے۔ فرنٹ اینڈ پر، سروس کو جزو میں داخل کیا جاتا ہے، جو مزید پوسٹس لوڈ کرنے کے لیے صارف کے اعمال کو سنتا ہے۔ انگولر کے ری ایکٹو پروگرامنگ ماڈل اور موثر بیک اینڈ استفسار کا امتزاج ڈیٹا کے بہاؤ کو یقینی بناتا ہے۔ ایک متعلقہ مثال سوشل میڈیا فیڈ ہو سکتی ہے جہاں صارفین نیچے سکرول کرتے ہی نئی پوسٹس بغیر کسی رکاوٹ کے لوڈ ہوتی ہیں۔ 📱

مضبوطی کے لیے خرابی سے نمٹنے اور جانچ بہت ضروری ہے۔ بیک اینڈ اسکرپٹس میں ڈیٹا بیس کے مسائل کو منظم کرنے کے لیے غلطی کے جوابات شامل ہیں، جب کہ فرنٹ اینڈ فیل سیف میکانزم کو لاگو کرتا ہے تاکہ صارفین کو کچھ غلط ہونے کی صورت میں آگاہ کیا جا سکے۔ مزید برآں، یونٹ ٹیسٹ بیک اینڈ لاجک اور فرنٹ اینڈ ڈیٹا فلو دونوں کی درستگی کی توثیق کرتے ہیں، مختلف ماحول میں قابل اعتمادی کو یقینی بناتے ہیں۔ اس نقطہ نظر کی پیروی کرتے ہوئے، ڈویلپرز موثر، صارف دوست ایپس بنا سکتے ہیں جو بڑے ڈیٹاسیٹس کو مؤثر طریقے سے منظم کرتی ہیں۔ اس طریقہ کے ساتھ، آپ کی انگولر ایپ نہ صرف آسانی سے کام کرے گی بلکہ صارف کو بہتر تجربہ بھی فراہم کرے گی۔ 🔄

صفحہ بندی اور کونیی انضمام کے ساتھ منگوز ڈیٹا کو مؤثر طریقے سے لوڈ کرنا

یہ حل متحرک فرنٹ اینڈ انضمام کے لیے انگولر کے ساتھ Node.js، Express، اور Mongoose کے ساتھ بیک اینڈ ڈیٹا حاصل کرنے کے لیے ایک ماڈیولر اپروچ کا استعمال کرتا ہے۔

// Backend: Define a route to fetch paginated posts
const express = require('express');
const asyncHandler = require('express-async-handler');
const router = express.Router();
const PostModel = require('./models/Post'); // Your Mongoose model

// Route to handle paginated requests
router.get('/posts', asyncHandler(async (req, res) => {
  const { page = 1, limit = 10 } = req.query; // Defaults: page 1, 10 posts per page
  try {
    const posts = await PostModel.find()
      .sort({ createdAt: 'descending' })
      .skip((page - 1) * limit)
      .limit(Number(limit));
    res.status(200).json(posts);
  } catch (error) {
    res.status(500).json({ message: 'Server error', error });
  }
}));

module.exports = router;

کونیی کے ساتھ متحرک فرنٹ اینڈ انٹیگریشن

یہ اسکرپٹ متحرک ڈیٹا لوڈنگ اور رینڈرنگ کے لیے فرنٹ اینڈ انگولر سروس اور جزو کی منطق کو ظاہر کرتا ہے۔

// Angular Service: post.service.ts
import { Injectable } from '@angular/core';
import { HttpClient } from '@angular/common/http';
import { Observable } from 'rxjs';

@Injectable({ providedIn: 'root' })
export class PostService {
  private apiUrl = 'http://localhost:3000/posts';

  constructor(private http: HttpClient) {}

  getPosts(page: number, limit: number): Observable<any> {
    return this.http.get(`${this.apiUrl}?page=${page}&limit=${limit}`);
  }
}
// Angular Component: post-list.component.ts
import { Component, OnInit } from '@angular/core';
import { PostService } from './post.service';

@Component({
  selector: 'app-post-list',
  templateUrl: './post-list.component.html',
  styleUrls: ['./post-list.component.css']
})
export class PostListComponent implements OnInit {
  posts: any[] = [];
  page = 1;
  limit = 10;

  constructor(private postService: PostService) {}

  ngOnInit(): void {
    this.loadPosts();
  }

  loadPosts(): void {
    this.postService.getPosts(this.page, this.limit).subscribe(data => {
      this.posts = [...this.posts, ...data];
    });
  }

  loadMore(): void {
    this.page++;
    this.loadPosts();
  }
}

بیک اینڈ صفحہ بندی کے لیے یونٹ ٹیسٹ شامل کرنا

اس اسکرپٹ میں بیک اینڈ پیجنیشن منطق کے لیے جیسٹ پر مبنی یونٹ ٹیسٹ شامل ہے تاکہ ڈیٹا کی مضبوطی کو یقینی بنایا جا سکے۔

// Jest Test: test/posts.test.js
const request = require('supertest');
const app = require('../app');
const PostModel = require('../models/Post');

describe('GET /posts', () => {
  it('should fetch paginated posts', async () => {
    const mockPosts = Array.from({ length: 10 }, (_, i) => ({
      title: `Post ${i + 1}`,
      image: `image${i + 1}.jpg`,
      createdAt: new Date()
    }));
    await PostModel.insertMany(mockPosts);

    const res = await request(app).get('/posts?page=1&limit=5');
    expect(res.statusCode).toBe(200);
    expect(res.body.length).toBe(5);
    expect(res.body[0].title).toBe('Post 1');
  });
});

ہموار صارف کے تجربے کے لیے موثر ڈیٹا مینجمنٹ

متحرک ڈیٹا لوڈنگ کا ایک اہم پہلو فرنٹ اینڈ پر پہلے سے حاصل کردہ ڈیٹا کی ریاست کو سنبھالنا ہے۔ ہر بار جب نئی پوسٹس لائی جائیں تو پورے ڈیٹاسیٹ کو اوور رائٹ کرنے کے بجائے، ایپلیکیشن کو ڈیٹا کو موجودہ فہرست میں شامل کرنا چاہیے۔ یہ جاوا اسکرپٹ کے سرنی آپریشنز کا استعمال کرتے ہوئے حاصل کیا جا سکتا ہے، جیسے concat()، جو موجودہ حالت کے ساتھ نئے ڈیٹا کو ضم کرتا ہے۔ اس کی ایک عملی مثال لامحدود اسکرولنگ فیڈز میں دیکھی جا سکتی ہے، جیسے انسٹاگرام یا ٹویٹر، جہاں پرانی پوسٹس متحرک طور پر لوڈ ہونے کے ساتھ ہی نظر آتی ہیں۔ 📱

ایک اور اہم غور بیک اینڈ آپٹیمائزیشن ہے۔ جیسے بنیادی طریقوں سے ہٹ کر skip() اور حد ()، آپ استفسار کی کارکردگی کو بڑھانے کے لیے ڈیٹا بیس انڈیکس استعمال کر سکتے ہیں۔ مثال کے طور پر، MongoDB اشاریہ جات بڑے ڈیٹا سیٹس کے لیے بھی تیزی سے بازیافت کے اوقات کو یقینی بناتے ہیں۔ جیسے فیلڈز پر اشاریہ جات createdAt یا _id ترتیب شدہ سوالات کے بوجھ کے وقت کو نمایاں طور پر کم کر سکتا ہے۔ ہائی ٹریفک ایپلی کیشنز کے ساتھ کام کرتے وقت، آپ ریڈیس جیسے کیشنگ سلوشنز پر بھی غور کر سکتے ہیں تاکہ بار بار رسائی کی جانے والی پوسٹس کو عارضی طور پر اسٹور کیا جا سکے، جس سے ڈیٹا کی ترسیل کو مزید تیز کیا جا سکے۔ 🚀

غلطی کی لچک ایک اور اہم عنصر ہے۔ ایک مضبوط ایپلیکیشن کو ایسے منظرناموں کو خوبصورتی سے ہینڈل کرنا چاہئے جہاں بیک اینڈ ڈیٹا واپس کرنے میں ناکام ہو جاتا ہے یا فرنٹ اینڈ کا سامنا سست نیٹ ورک کا ہوتا ہے۔ صارف کے تاثرات کے طریقہ کار کو نافذ کرنا، جیسے لوڈنگ اسپنرز کو ڈسپلے کرنا یا دوبارہ کوشش کرنے کے اختیارات، ایک ہموار تجربہ کو یقینی بناتا ہے۔ مثال کے طور پر، ایک نیوز ایپ جو فلائی پر آرٹیکلز کو اپ ڈیٹ کرتی ہے وہ "مزید پوسٹس دستیاب نہیں" ظاہر کر سکتی ہے جب صارفین فیڈ کے اختتام تک پہنچ جاتے ہیں، وضاحت فراہم کرتے ہیں اور صارف کی مصروفیت کو بہتر بناتے ہیں۔ 🔄

اضافی ڈیٹا لوڈنگ پر عام سوالات کے جوابات

  1. کا مقصد کیا ہے۔ skip() منگوز میں؟
  2. skip() آپ کو استفسار کے نتیجے کے آغاز سے دستاویزات کی ایک مخصوص تعداد کو چھوڑنے کی اجازت دیتا ہے، جس سے صفحہ بندی کے لیے ضروری ہے۔
  3. آپ JavaScript میں موجودہ فہرست میں نئی ​​پوسٹس کو کیسے شامل کرتے ہیں؟
  4. آپ صف کے طریقے استعمال کرسکتے ہیں جیسے concat() یا اسپریڈ آپریٹر [...array1, ...array2] موجودہ فہرست کے ساتھ نئے ڈیٹا کو ضم کرنے کے لیے۔
  5. MongoDB اشاریہ جات استفسار کی کارکردگی کو کیسے بہتر بنا سکتے ہیں؟
  6. اشاریہ جات جیسے شعبوں کے لیے ایک منظم ڈھانچہ بنا کر دستاویزات کی تلاش کے لیے درکار وقت کو کم کرتے ہیں۔ createdAt یا _id.
  7. Angular کا کردار کیا ہے؟ subscribe() طریقہ؟
  8. دی subscribe() طریقہ آبزرویبل کے ڈیٹا سٹریم کو سنتا ہے، نئی پوسٹس حاصل کرتے وقت ریئل ٹائم اپڈیٹس کو فعال کرتا ہے۔
  9. آپ کونیی میں نیٹ ورک کی غلطیوں کو احسن طریقے سے کیسے سنبھال سکتے ہیں؟
  10. آپ Angular's استعمال کر سکتے ہیں۔ HttpInterceptor غلطیوں کو پکڑنے اور بہتر تجربے کے لیے دوبارہ کوشش کرنے والی منطق یا صارف کے انتباہات کو نافذ کرنے کے لیے۔
  11. ہائی ٹریفک ایپلی کیشنز میں کیشنگ کیوں اہم ہے؟
  12. یہ ڈیٹا بیس کا بوجھ کم کرتا ہے اور اس طرح کے ٹولز کا استعمال کرتے ہوئے میموری میں کثرت سے رسائی حاصل کرنے والے ڈیٹا کو ذخیرہ کرکے رسپانس ٹائم کو بہتر بناتا ہے۔ Redis.
  13. روایتی صفحہ بندی پر لامحدود سکرولنگ کا کیا فائدہ ہے؟
  14. لامحدود اسکرولنگ صارف کے اسکرول کے ساتھ ساتھ مزید ڈیٹا لوڈ کرکے صفحہ کو دوبارہ لوڈ کرنے کی ضرورت کو ختم کرکے ایک ہموار براؤزنگ کا تجربہ فراہم کرتا ہے۔
  15. کیسے کرتا ہے limit() API کی کارکردگی کو بہتر بنائیں؟
  16. limit() ڈیٹا کی منتقلی کو ہلکا اور زیادہ موثر بناتے ہوئے، استفسار کے ذریعے واپس کیے گئے دستاویزات کی تعداد کو محدود کرتا ہے۔
  17. ڈیٹا لوڈنگ کے لیے API کی کارکردگی کو جانچنے کے لیے کچھ ٹولز کیا ہیں؟
  18. جیسے اوزار Postman یا Supertest درخواستوں کی تقلید کر سکتے ہیں اور استفسار کی کارکردگی اور جوابات کی توثیق کر سکتے ہیں۔
  19. آپ اس بات کو کیسے یقینی بناتے ہیں کہ پہلے سے بھری ہوئی پوسٹس اسکرین پر موجود رہیں؟
  20. موجودہ حالت کو متغیر میں برقرار رکھ کر اور نیا ڈیٹا شامل کر کے، پرانی پوسٹس کو اوور رائٹ کیے بغیر UI اپ ڈیٹس کو یقینی بنا کر۔

انکریمنٹل لوڈنگ کے لیے کلیدی حکمت عملیوں کو لپیٹنا

ڈائنامک ڈیٹا لوڈنگ ڈویلپرز کو چھوٹے بیچوں میں پوسٹس لا کر ایپ کی کارکردگی اور صارف کے تجربے کو بہتر بنانے کی اجازت دیتی ہے۔ انگولر کے اسٹیٹ مینجمنٹ اور منگوز کے آپٹمائزڈ سوالات کا استعمال کرتے ہوئے، آپ بغیر کسی رکاوٹ کے ڈیٹا کے بہاؤ کو یقینی بنا سکتے ہیں اور صارفین کو مسلسل دکھائی دینے والے مواد سے منسلک رکھ سکتے ہیں۔ 📱

پہلے سے بھرے ہوئے ڈیٹا کو برقرار رکھنے اور غلطیوں کو خوبصورتی سے سنبھالنے سے، ایپلی کیشنز مضبوط اور صارف دوست بن جاتی ہیں۔ یہ نقطہ نظر انسٹاگرام یا نیوز ایپس جیسے مشہور پلیٹ فارمز کی آئینہ دار ہے، جو مانوس، بدیہی انٹرفیس بناتا ہے۔ صحیح ٹولز اور حکمت عملیوں کا امتزاج کسی بھی جدید ویب ایپ کے لیے قابل توسیع، موثر حل کو قابل بناتا ہے۔

اضافی لوڈنگ تکنیک کے ذرائع اور حوالہ جات
  1. پر تفصیلی دستاویزات منگوز سکپ () اور حد () ، استفسار کے نتائج کو مؤثر طریقے سے صفحہ بندی کرنے کے لیے استعمال کیا جاتا ہے۔
  2. سرکاری کونیی گائیڈ آن HTTP کلائنٹ اور قابل مشاہدہ ، غیر مطابقت پذیر ڈیٹا کی بازیافت کا انتظام کرنے کا طریقہ دکھا رہا ہے۔
  3. سے جامع ٹیوٹوریل ڈیجیٹل اوشین کونیی ایپلی کیشنز میں لامحدود سکرولنگ کو لاگو کرنے پر۔
  4. سے MongoDB کے لیے کارکردگی کو بہتر بنانے کی تجاویز MongoDB سرکاری دستاویزات خاص طور پر تیز تر استفسارات کے لیے انڈیکس کے استعمال پر توجہ مرکوز کی گئی ہے۔
  5. Node.js APIs کے ساتھ یونٹ ٹیسٹنگ طنز پسدید کی وشوسنییتا کو یقینی بنانے کے طریقوں کی وضاحت کرنا۔