Typegoose TypeScript: पूर्ण गाइड उदाहरणों के साथ

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

Typegoose for TypeScript: पूर्ण गाइड

Typegoose एक शक्तिशाली लाइब्रेरी है जो Mongoose के लिए एक रैपर का काम करती है। यह आपको TypeScript क्लासेस और डेकोरेटर्स का उपयोग करके MongoDB मॉडल्स को परिभाषित करने की अनुमति देती है। यह Node.js डेवलपमेंट की एक मुख्य समस्या को हल करती है: TypeScript की सख्त टाइपिंग और Mongoose की डायनामिक प्रकृति के बीच का अंतर। मैन्युअल रूप से टाइप्स और स्कीमा को डुप्लिकेट करने के बजाय, Typegoose आपको एक बार मॉडल को TypeScript क्लास के रूप में वर्णित करने और स्वचालित रूप से उससे Mongoose स्कीमा जेनरेट करने की सुविधा देता है।

इसकी आवश्यकता क्यों है? सबसे पहले, यह बॉयलरप्लेट कोड को काफी कम करता है। अब आपको अलग से इंटरफ़ेस और अलग से स्कीमा लिखने की ज़रूरत नहीं है - TypeScript क्लास दोनों कार्य करता है। दूसरा, Typegoose सभी चरणों में पूर्ण टाइप सुरक्षा सुनिश्चित करता है: दस्तावेज़ बनाने से लेकर क्वेरी चलाने तक। IDE फ़ील्ड, मेथड और उनके टाइप्स को सुझाएगा, जिससे फ़ील्ड नामों में टाइपो या गलत डेटा टाइप से जुड़ी त्रुटियाँ लगभग समाप्त हो जाती हैं। तीसरा, लाइब्रेरी Mongoose की सभी क्षमताओं का समर्थन करती है: वर्चुअल फ़ील्ड, हुक (pre/post), इंडेक्स, populate और मिडलवेयर।

Typegoose बड़े प्रोजेक्ट्स के लिए आदर्श है जहाँ कोड की रखरखाव क्षमता महत्वपूर्ण है, साथ ही उन टीमों के लिए जो TypeScript में OOP के सभी लाभों का उपयोग करना चाहती हैं। यह NestJS, Express और अन्य फ्रेमवर्क के साथ आसानी से एकीकृत होता है, डेटा वर्णन का एक एकीकृत मानक प्रदान करता है।

इंस्टॉलेशन

Typegoose और इसकी डिपेंडेंसीज़ को इंस्टॉल करने के लिए टर्मिनल में निम्नलिखित चलाएँ:

npm install @typegoose/typegoose mongoose
npm install -D @types/mongoose

यदि आप yarn का उपयोग कर रहे हैं:

yarn add @typegoose/typegoose mongoose
yarn add -D @types/mongoose

Typegoose के काम करने के लिए TypeScript संस्करण 4.0 या उच्चतर आवश्यक है। सुनिश्चित करें कि आपके tsconfig.json में निम्नलिखित विकल्प शामिल हैं:

{
  "compilerOptions": {
    "experimentalDecorators": true,
    "emitDecoratorMetadata": true,
    "target": "ES2020",
    "module": "commonjs"
  }
}

त्वरित शुरुआत

चलिए एक सरल उपयोगकर्ता मॉडल बनाते हैं और इसे MongoDB में सेव करते हैं।

import { prop, getModelForClass } from '@typegoose/typegoose';
import mongoose from 'mongoose';

// 1. मॉडल क्लास को परिभाषित करें
class User {
  @prop({ required: true })
  public name!: string;

  @prop({ required: true, unique: true })
  public email!: string;

  @prop({ default: 0 })
  public age!: number;
}

// 2. Mongoose मॉडल प्राप्त करें
const UserModel = getModelForClass(User);

// 3. DB से कनेक्ट करें और काम करें
async function main() {
  await mongoose.connect('mongodb://localhost:27017/test');

  // उपयोगकर्ता बनाएँ
  const user = await UserModel.create({
    name: 'राहुल',
    email: 'rahul@example.com',
    age: 25,
  });

  console.log('बनाया गया:', user);

  // उपयोगकर्ता खोजें
  const found = await UserModel.findOne({ email: 'rahul@example.com' });
  console.log('मिला:', found);
}

main().catch(console.error);

यह न्यूनतम उदाहरण मुख्य विचार को दर्शाता है: @prop डेकोरेटर वाला User क्लास स्कीमा का वर्णन करता है, और getModelForClass फ़ंक्शन उपयोग के लिए तैयार Mongoose मॉडल बनाता है।

मुख्य तरीके और फ़ंक्शन

1. @prop() — प्रॉपर्टी डेकोरेटर

सिग्नेचर: @prop(options?: PropOptions)

विवरण: Mongoose स्कीमा में एक फ़ील्ड को परिभाषित करता है। यह Mongoose में फ़ील्ड विकल्पों के समान विकल्पों का एक ऑब्जेक्ट लेता है (required, default, unique, ref, enum, आदि)।

import { prop } from '@typegoose/typegoose';

class Product {
  @prop({ required: true, type: String })
  public title!: string;

  @prop({ default: 0, min: 0 })
  public price!: number;

  @prop({ enum: ['active', 'inactive'], default: 'active' })
  public status!: string;
}

2.

अनुशंसाएँ