ऑब्जेक्ट-रिलेशनल मैपर (ओआरएम) एक पुस्तकालय है जो ऑब्जेक्ट-रिलेशनल मैपिंग तकनीक को लागू करता है। यह आपको अपनी पसंदीदा भाषा के ऑब्जेक्ट-ओरिएंटेड प्रतिमान का उपयोग करके SQL डेटाबेस क्वेरी लिखने देता है।

टाइपओआरएम एक टाइपस्क्रिप्ट ओआरएम है जो विभिन्न डेटाबेस के साथ इंटरफेसिंग को बहुत आसान बनाता है। यह SQL डेटाबेस के साथ काम करता है लेकिन MongoDB जैसे NoSQL डेटाबेस के साथ अच्छी तरह से इंटरफेस करता है।

NestJS, TypeORM आउट-ऑफ़-द-बॉक्स के लिए उच्च-स्तरीय समर्थन प्रदान करता है। समर्पित टाइपओआरएम पैकेज एकीकरण को अपेक्षाकृत आसान बनाता है।

चरण 1: निर्भरता स्थापित करना

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

TypeORM और इसके मूल NestJS पैकेज को स्थापित करने के लिए निम्न कमांड चलाएँ एनपीएम पैकेज मैनेजर:

एनपीएम इंस्टॉल @nestjs/टाइपोर्म टाइपोर्म

SQLite स्थापित करने के लिए निम्न आदेश चलाएँ:

NPM इंस्टॉल sqlite3

चरण 2: एक इकाई बनाना

एक इकाई डेटाबेस में संग्रहीत डेटा को परिभाषित करने वाले क्षेत्रों का एक संग्रह है। TypeORM आपके डेटाबेस में एक टेबल बनाने के लिए एंटिटी फाइल का उपयोग करता है।

instagram viewer

निकाय बनाने के लिए नीचे दिए गए चरणों का पालन करें:

  1. अपने एप्लिकेशन मॉड्यूल में एक फ़ाइल बनाएं और इसे NestJS नामकरण परंपरा के अनुसार नाम दें (.entity.ts).
  2. अपनी इकाई फ़ाइल में, आयात करें कंपनी, कॉलम, तथा प्राथमिक जनरेटेड कॉलम से सज्जाकार टाइपोर्म.
  3. अपनी इकाई फ़ाइल में, एक वर्ग बनाएं और निर्यात करें।
  4. अपने डेटाबेस में इच्छित मानों के साथ वर्ग को पॉप्युलेट करें, जैसे पहचान, नाम, आदि।
  5. एंटिटी डेकोरेटर के साथ अपने एंटिटी क्लास को एनोटेट करें। यह आपकी कक्षा को एक इकाई के रूप में TypeORM के लिए पहचानने योग्य बनाता है।
  6. अपनी आईडी प्रॉपर्टी को PrimaryGeneratedColumn डेकोरेटर के साथ एनोटेट करें। यह TypeORM को चिह्नित करने के लिए कहता है पहचान प्राथमिक कुंजी के रूप में और इसे ऑटो-इन्क्रीमेंट करें।
  7. कॉलम डेकोरेटर के साथ शेष गुणों को एनोटेट करें। यह उन्हें आपके डेटाबेस में कॉलम के रूप में जोड़ता है।

उदाहरण के लिए:

// src/test/test.entity.ts
आयात {इकाई, कॉलम, प्राइमरी जेनरेटेड कॉलम} से 'टाइपोर्म';

@कंपनी()
निर्यात करनाकक्षापरीक्षण{
@PrimaryGeneratedColumn()
आईडी नंबर;

@कॉलम()
संपत्ति_1: स्ट्रिंग;

@कॉलम()
संपत्ति_2: स्ट्रिंग;

@कॉलम()
संपत्ति_3: स्ट्रिंग;
}

उपरोक्त इकाई फ़ाइल इस तालिका को आपके डेटाबेस में बनाती है:

परीक्षण
पहचान इंट (11) प्राथमिक कुंजी AUTO_INCREMENT
संपत्ति_1 वर्कर (255)
संपत्ति_2 वर्कर (255)
संपत्ति_3 वर्कर (255)

टाइपओआरएम दस्तावेज संस्थाओं को और विस्तार से शामिल करता है।

चरण 3: अपने एप्लिकेशन को डेटाबेस से कनेक्ट करना

अब जब आपकी इकाई सेट हो गई है, तो आपको अपने एप्लिकेशन को डेटाबेस से कनेक्ट करना होगा। यह उदाहरण SQLite का उपयोग करता है।

अपने एप्लिकेशन को डेटाबेस से जोड़ने के लिए नीचे दिए गए चरणों का पालन करें:

  1. आपके अनुप्रयोगों में रूट मॉड्यूल (आमतौर पर) ऐप.मॉड्यूल.ts फ़ाइल), आयात टाइपऑर्ममॉड्यूल से @nestjs/टाइपोर्म.
  2. उसी फ़ाइल में, अपनी सभी संस्थाओं को आयात करें।
  3. में आयात सरणी, कॉल करें जड़ के लिए TypeOrmModule पर विधि। forRoot विधि आपके एप्लिकेशन में सभी मॉड्यूल के माध्यम से डेटाबेस कनेक्शन साझा करती है।
  4. एक खाली वस्तु को forRoot विधि में तर्क के रूप में पास करें; यह TypeORM कॉन्फ़िगरेशन ऑब्जेक्ट होगा।
  5. एक संपत्ति जोड़ें, प्रकार, कॉन्फ़िगरेशन ऑब्जेक्ट पर और इसे सेट करें "स्क्लाइट". प्रकार की संपत्ति आपके द्वारा उपयोग किए जा रहे डेटाबेस के नाम को दर्शाती है।
  6. एक और संपत्ति जोड़ें, डेटाबेस, कॉन्फ़िगरेशन ऑब्जेक्ट पर और इसे सेट करें "test.db". डेटाबेस गुण आपके डेटाबेस के लिए आपके पसंदीदा नाम को दर्शाता है।
  7. एक और संपत्ति जोड़ें, संस्थाओं, कॉन्फ़िगरेशन ऑब्जेक्ट पर और इसे एक खाली सरणी पर सेट करें। आपके द्वारा पहले आयात की गई इकाइयों के साथ खाली सरणी को पॉप्युलेट करें।
  8. एक और संपत्ति जोड़ें, सिंक्रनाइज़, और इसे सेट करें सच; यह गुण आपकी संस्थाओं को आपके डेटाबेस में सिंक करता है और हर बार जब आप कोड चलाते हैं तो इसे अपडेट करते हैं। आपको इस प्रॉपर्टी को केवल इस पर सेट करना चाहिए सच विकास में। उत्पादन के दौरान, आपको इसे सेट करना चाहिए असत्य डेटा हानि से बचने के लिए।
// src/app.module.ts
आयात { मापांक } से '@ Nestjs/आम';
आयात { टाइपऑर्ममॉड्यूल } से '@ Nestjs/typeorm';
आयात { परीक्षण } से './test/test.entity';
आयात {इकाई2} से './entity/entity.entity';
आयात { टेस्ट मॉड्यूल } से './test/test.module';

@मापांक({
आयात: [
टाइपऑर्ममॉड्यूलजड़ के लिए({
प्रकार: 'SQLite',
डेटाबेस: 'test.db',
संस्थाओं: [परीक्षण, Entity2],
सिंक्रनाइज़ करें: सच, // केवल विकास
}),
टेस्टमॉड्यूल,
],
नियंत्रकों: [],
प्रदाताओं: [],
})
निर्यात करनाकक्षाऐप मॉड्यूल{}

चरण 4: एक रिपोजिटरी बनाना

रिपॉजिटरी एक इकाई की एक्सेस लेयर है जिसका उपयोग डेटाबेस में इकाई द्वारा बनाई गई तालिका पर क्वेरी (सम्मिलित करने, हटाने, सहेजने, खोजने, आदि) करने के लिए किया जाता है। टाइपओआरएम रिपोजिटरी डिजाइन पैटर्न का समर्थन करता है, इस प्रकार, प्रत्येक इकाई का अपना भंडार होता है।

जब आप नीचे दिए गए चरणों का पालन करते हैं तो TypeORM स्वचालित रूप से आपकी इकाई के लिए एक भंडार बनाता है:

  1. अपनी इकाई की मॉड्यूल फ़ाइल में, आयात करें टाइपऑर्ममॉड्यूल से @nestjs/टाइपोर्म और अपनी इकाई आयात करें।
  2. बनाओ आयात में सरणी @मापांक डेकोरेटर
  3. आयात सरणी में, कॉल करें फ़ीचर के लिए TypeOrmModule पर विधि।
  4. एक सरणी को अपने तर्क के रूप में पास करें और सरणी को अपनी इकाई के साथ पॉप्युलेट करें।
// src/test/test.module.ts
आयात { मापांक } से '@ Nestjs/आम';
आयात { टाइपऑर्ममॉड्यूल } से '@ Nestjs/typeorm';
आयात {टेस्ट कंट्रोलर} से './test.controller';
आयात { टेस्ट सर्विस } से './test.service';
आयात { परीक्षण } से './test.entity';

@मापांक({
आयात: [TypeOrmModule.forFeature([टेस्ट])],
प्रदाताओं: [टेस्ट सर्विस],
नियंत्रकों: [टेस्ट कंट्रोलर],
})

चरण 5: निर्भरता इंजेक्शन का उपयोग करके अपनी रिपॉजिटरी को उसकी सेवा में इंजेक्ट करना

निर्भरता इंजेक्शन एक सॉफ्टवेयर इंजीनियरिंग तकनीक है जो नियंत्रण सिद्धांत के व्युत्क्रम का एक रूप है। यह निर्भरता प्रबंधन के बोझ को क्लाइंट कोड से पुस्तकालय या सेवा पर निर्भर करता है जिस पर यह निर्भर करता है।

अपनी रिपॉजिटरी को किसी सेवा में इंजेक्ट करने के लिए नीचे दिए गए चरणों का पालन करें:

  1. आपकी सेवा फ़ाइल में, आयात करें कोष से टाइपोर्म और यह इंजेक्शन रिपोजिटरी डेकोरेटर से @nestjs/टाइपोर्म. उस इकाई को भी आयात करें जिसे आप इसके भंडार को इंजेक्ट करना चाहते हैं।
  2. अपनी सेवा कक्षा में, एक बनाएं निर्माता.
  3. घोषित करें निजी चर, रेपो, इसे इनिशियलाइज़ करने के लिए कंस्ट्रक्टर में एक पैरामीटर के रूप में।
  4. अपनी इकाई के सामान्य प्रकार के साथ रेपो के लिए एक प्रकार का रिपोजिटरी असाइन करें।
  5. रेपो को InjectRepository डेकोरेटर के साथ एनोटेट करें और अपनी इकाई को एक तर्क के रूप में पास करें।
// test.service.ts
आयात {इंजेक्शन योग्य} से '@ Nestjs/आम';
आयात {भंडार} से 'टाइपोर्म';
आयात {इंजेक्ट रिपोजिटरी} से '@ Nestjs/typeorm';
आयात { परीक्षण } से './test.entity';

@ इंजेक्शन योग्य()
निर्यात करनाकक्षाटेस्ट सर्विस{
निर्माता(
@InjectRepository(परीक्षण)
निजी रेपो: रिपोजिटरी<परीक्षण>,
) {}
}

अब जब आपका सेटअप पूरा हो गया है, तो आप बना सकते हैं एसक्यूएल प्रश्न डेटा को पुनः प्राप्त या संशोधित करने के लिए उस पर।

TypeORM के साथ SQL क्वेरी बनाना

आप TypeORM की रिपॉजिटरी विधियों को कॉल करके कोई भी सरल SQL क्वेरी बना सकते हैं रेपो आपकी सेवा वर्ग के अंदर चर। आप TypeORM के क्वेरी बिल्डर का उपयोग करके जटिल SQL क्वेरी भी बना सकते हैं।