NestJS एंटरप्राइज़ बैकएंड API · पाठ

डेटाबेस सीडिंग और परीक्षण

सुसंगत परिवेश सुनिश्चित करने के लिए विकास और परीक्षण के उद्देश्य से अपने डेटाबेस में प्रारंभिक डेटा भरना सीखिए।

पाठ 3, कुल 3 में से11 चरण

डेटाबेस सीडिंग और परीक्षण, CoddyKit पर NestJS एंटरप्राइज़ बैकएंड API का एक निःशुल्क पाठ है। यह 3 में से 3वाँ पाठ है। आप नीचे पूरा पाठ निःशुल्क पढ़ सकते हैं—फिर अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर के साथ ब्राउज़र में इसका व्यावहारिक अभ्यास कर सकते हैं। यह NestJS एंटरप्राइज़ बैकएंड API सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। NestJS एंटरप्राइज़ बैकएंड API पाठ्यक्रम में कुल 3 पाठ शामिल हैं।

डेटाबेस सीडिंग क्या है

कल्पना कीजिए कि आप कोई नया प्रोजेक्ट शुरू कर रहे हैं या परीक्षण चला रहे हैं। आपका डेटाबेस खाली है! डेटाबेस सीडिंग डेटाबेस में प्रारंभिक डेटा भरने की प्रक्रिया है।

यह डेटा डिफ़ॉल्ट उपयोगकर्ता खातों से लेकर नमूना उत्पाद सूचियों तक कुछ भी हो सकता है। यह विकास, परीक्षण और आवश्यक कॉन्फ़िगरेशन डेटा के साथ उत्पादन परिवेश तैयार करने के लिए भी महत्वपूर्ण है।

सीडिंग के लाभ

सीडिंग के कई महत्वपूर्ण लाभ हैं:

  • सुसंगत परिवेश: यह सुनिश्चित करती है कि टीम का प्रत्येक सदस्य और आपकी CI/CD पाइपलाइन समान आधारभूत डेटा के साथ काम करे।
  • तेज़ विकास: विकासकर्ताओं को परीक्षण डेटा हाथ से दर्ज करने में समय बर्बाद नहीं करना पड़ता।
  • विश्वसनीय परीक्षण: परीक्षण पूर्वानुमेय डेटा पर चलते हैं, जिससे परिणाम अधिक भरोसेमंद बनते हैं।
  • आसान शुरुआत: टीम के नए सदस्य सार्थक डेटा के साथ अपना स्थानीय परिवेश जल्दी सेट अप कर सकते हैं।

NestJS और TypeORM में सीडिंग

TypeORM का उपयोग करने वाले NestJS अनुप्रयोग में सीडिंग में आमतौर पर ऐसी समर्पित स्क्रिप्ट बनाना शामिल होता है, जो आपकी TypeORM इकाइयों और रिपॉज़िटरी के साथ काम करती हैं।

TypeORM में स्वयं माइग्रेशन के लिए CLI है, लेकिन सीडिंग के लिए आप अक्सर ऐसी कस्टम स्क्रिप्ट बनाते हैं जिन्हें आवश्यकता पड़ने पर चलाया जा सके। ये स्क्रिप्ट डेटा डालने के लिए TypeORM के EntityManager या विशिष्ट रिपॉज़िटरी का उपयोग करती हैं।

सरल सीडर बनाना

आइए, सीडर स्क्रिप्ट का एक वैचारिक उदाहरण देखते हैं। यह स्क्रिप्ट आमतौर पर src/database/seeds निर्देशिका में रहती है और कस्टम npm स्क्रिप्ट के माध्यम से चलाई जाती है।

यह TypeORM के Repository का उपयोग करके नया उपयोगकर्ता बनाती और सहेजती है, जिससे डेटा सही ढंग से स्थायी रूप से सुरक्षित हो जाता है।

// src/database/seeds/user.seeder.ts
import { DataSource } from 'typeorm';
import { User } from '../../users/user.entity';
import { Seeder, SeederFactoryManager } from 'typeorm-extension';

export default class UserSeeder implements Seeder {
  public async run(
    dataSource: DataSource,
    factoryManager: SeederFactoryManager
  ): Promise<any> {
    const userRepository = dataSource.getRepository(User);

    // Check if user already exists to prevent duplicates
    let adminUser = await userRepository.findOneBy({ email: 'admin@example.com' });

    if (!adminUser) {
      adminUser = userRepository.create({
        firstName: 'Admin',
        lastName: 'User',
        email: 'admin@example.com',
        password: 'securePassword123', // In real app, hash this!
      });
      await userRepository.save(adminUser);
      console.log('Admin user seeded.');
    } else {
      console.log('Admin user already exists.');
    }
  }
}

सीडर स्क्रिप्ट चलाना

अपने सीडर चलाने के लिए आप आमतौर पर अपनी package.json में एक कस्टम स्क्रिप्ट जोड़ते हैं। TypeScript फ़ाइलों को सीधे चलाने के लिए आप ts-node का उपयोग कर सकते हैं या पहले उनका संकलन कर सकते हैं।

एक सामान्य सेटअप में typeorm-extension लाइब्रेरी शामिल होती है, जो माइग्रेशन के समान सीडर को प्रबंधित और चलाने का अधिक व्यवस्थित तरीका प्रदान करती है।

// package.json snippets
{
  "scripts": {
    "seed:run": "ts-node -r tsconfig-paths/register ./node_modules/typeorm-extension/dist/cli/index.js seed -d src/config/typeorm.config.ts"
  }
}

विकास डेटा

विकास के लिए सीडिंग का अर्थ अक्सर अपने डेटाबेस में पर्याप्त मात्रा में वास्तविक-जैसा डेटा भरना होता है। इससे आपको सैकड़ों प्रविष्टियाँ हाथ से बनाए बिना उपयोगकर्ता इंटरफ़ेस के घटकों, पृष्ठांकन और खोज कार्यक्षमता का परीक्षण करने में सहायता मिलती है।

उपयोगकर्ताओं, उत्पादों, पोस्ट आदि के लिए विविध और यादृच्छिक डेटा बनाने हेतु आप अपने सीडर में Faker.js (या @faker-js/faker) जैसी लाइब्रेरी का उपयोग कर सकते हैं।

परीक्षण-विशिष्ट डेटा

परीक्षण की बात आने पर सीडिंग की भूमिका अधिक सटीक हो जाती है। आपको अक्सर अपनी इकाई और एकीकरण परीक्षणों के लिए बहुत विशिष्ट और नियंत्रित डेटा-समूह चाहिए होते हैं।

उदाहरण के लिए, लॉगिन सुविधा के परीक्षण के लिए सैकड़ों रिकॉर्ड के बजाय केवल एक विशिष्ट उपयोगकर्ता रिकॉर्ड की आवश्यकता हो सकती है। इससे आपके परीक्षण नियतात्मक रहते हैं और अप्रत्याशित डेटा के कारण विफल नहीं होते।

परीक्षण कार्यप्रवाह में सीडिंग

प्रत्येक परीक्षण चलने से पहले साफ़ स्थिति सुनिश्चित करने के लिए, परीक्षणों से पहले या बाद में सीडर चलाना एक सामान्य प्रथा है। लोकप्रिय परीक्षण ढाँचा Jest आपको सेटअप और समापन कार्य परिभाषित करने की सुविधा देता है।

परीक्षण शुरू होने से पहले डेटाबेस को ज्ञात स्थिति में रखने के लिए आप सीडिंग स्क्रिप्ट चलाने हेतु beforeEach या beforeAll का उपयोग कर सकते हैं।

// Conceptual test file snippet
import { INestApplication } from '@nestjs/common';
import { Test } from '@nestjs/testing';
import { AppModule } from './app.module';
import { DataSource } from 'typeorm';
import UserSeeder from './database/seeds/user.seeder'; // Your seeder

describe('UsersController (e2e)', () => {
  let app: INestApplication;
  let dataSource: DataSource;

  beforeAll(async () => {
    const moduleFixture = await Test.createTestingModule({
      imports: [AppModule],
    }).compile();

    app = moduleFixture.createNestApplication();
    await app.init();
    
    // Get TypeORM DataSource
    dataSource = app.get(DataSource);
  });

  beforeEach(async () => {
    // Clear database and run specific seeders before each test
    await dataSource.synchronize(true); // CAUTION: Clears all data! Use carefully.
    await new UserSeeder().run(dataSource, null); // Run your seeder
  });

  afterAll(async () => {
    await app.close();
  });

  it('/users (GET) should return seeded users', () => {
    // Test logic here, expecting seeded data
  });
});

सीडिंग की प्रमुख प्रथाएँ

सुदृढ़ सीडिंग के लिए इन सुझावों का पालन कीजिए:

  • इडेम्पोटेंसी: सुनिश्चित कीजिए कि सीडर को कई बार चलाने पर अनावश्यक रूप से दोहराया हुआ डेटा न बने। पहले से मौजूद रिकॉर्ड की जाँच कीजिए।
  • स्पष्ट पृथक्करण: विकास सीडर (बहुत-सा डमी डेटा) को परीक्षण सीडर (न्यूनतम और सटीक डेटा) से अलग रखिए।
  • संस्करण नियंत्रण: सीडर को अपने संस्करण नियंत्रण तंत्र में संग्रहित कीजिए।
  • परिवेश-विशिष्टता: उत्पादन में सीडर चलाते समय सावधान रहिए। केवल आवश्यक कॉन्फ़िगरेशन डेटा ही भरिए।

सीडिंग के लाभ

डेटाबेस सीडिंग विकास और परीक्षण के लिए महत्वपूर्ण लाभ प्रदान करती है।

डेटाबेस सीडिंग के प्राथमिक लाभ निम्नलिखित में से कौन-से हैं?

पुनरावलोकन: सफलता के लिए सीडिंग

बधाई हो! आपने डेटाबेस सीडिंग के बारे में सीखा है, जो प्रत्येक बैकएंड विकासकर्ता के लिए एक महत्वपूर्ण प्रथा है।

हमने सीडिंग की अवधारणा, विकास और परीक्षण के लिए इसके लाभ तथा NestJS/TypeORM अनुप्रयोग में सीडर को लागू करने और चलाने का तरीका देखा। आपने यह भी देखा कि सीडिंग को अपने परीक्षण कार्यप्रवाह में कैसे जोड़ा जाता है।

सीडिंग में दक्षता हासिल करके आप विकास और परीक्षण चक्रों को सुसंगत, विश्वसनीय और कुशल बना सकते हैं!

शुरुआत निःशुल्क

एआई शिक्षक के साथ TypeScript सीखें — निःशुल्क

अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।

पाठ्यक्रम
20
पाठ
76

अक्सर पूछे जाने वाले प्रश्न

क्या “डेटाबेस सीडिंग और परीक्षण” पाठ निःशुल्क है?

हाँ—“डेटाबेस सीडिंग और परीक्षण” का पूरा पाठ यहाँ वेब पर निःशुल्क पढ़ा जा सकता है। इंटरैक्टिव अभ्यास (अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर) करने और NestJS एंटरप्राइज़ बैकएंड API पाठ्यक्रम का बाकी हिस्सा अनलॉक करने के लिए CoddyKit PRO लें। NestJS एंटरप्राइज़ बैकएंड API पाठ्यक्रम में कुल 3 पाठ शामिल हैं।

“डेटाबेस सीडिंग और परीक्षण” में मैं क्या सीखूँगा?

सुसंगत परिवेश सुनिश्चित करने के लिए विकास और परीक्षण के उद्देश्य से अपने डेटाबेस में प्रारंभिक डेटा भरना सीखिए। आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ NestJS एंटरप्राइज़ बैकएंड API का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।

क्या NestJS एंटरप्राइज़ बैकएंड API शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?

पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर NestJS एंटरप्राइज़ बैकएंड API शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 3 में से 3वाँ पाठ है।

“डेटाबेस सीडिंग और परीक्षण” पाठ पूरा करने में कितना समय लगता है?

CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।

क्या मैं इस NestJS एंटरप्राइज़ बैकएंड API पाठ में कोड लिख और चला सकता हूँ?

हाँ। हर NestJS एंटरप्राइज़ बैकएंड API पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।

इस पाठ्यक्रम के सभी पाठ

  1. कस्टम TypeORM रिपॉज़िटरी
  2. ट्रांज़ैक्शन और माइग्रेशन
  3. डेटाबेस सीडिंग और परीक्षण
← NestJS एंटरप्राइज़ बैकएंड API पर वापस जाएँ