कुछ रोमांचक, पूरक प्रौद्योगिकियों के बारे में जानने के लिए इस ट्यूटोरियल का अनुसरण करें जिनका उपयोग आप अपने अगले प्रोजेक्ट के लिए कर सकते हैं।
अन्य Node.js फ्रेमवर्क की तरह, Nest.js मजबूत और स्केलेबल बैकएंड सेवाओं के निर्माण के लिए एक व्यापक टूलकिट प्रदान करता है। बहरहाल, यह समझना महत्वपूर्ण है कि क्रिएट, रीड, अपडेट और डिलीट को कैसे लागू किया जाए Nest.js में (CRUD) संचालन कुशलतापूर्वक-ये विकास में सबसे बुनियादी संचालन हैं एपीआई का.
टाइपओआरएम और पोस्टग्रेएसक्यूएल डेटाबेस का उपयोग करके Nest.js CRUD REST API बनाने का तरीका जानें।
Nest.js के साथ शुरुआत करना
आरंभ करने के लिए, Nest.js कमांड लाइन टूल इंस्टॉल करें:
एनपीएम आई -जी @नेस्टजेएस/सीएलआई
इसके बाद, चलाकर एक नया प्रोजेक्ट बनाएं:
नेस्ट न्यू क्रुड-ऐप
सीएलआई टूल आपको एक पैकेज मैनेजर चुनने के लिए कहेगा, वह विकल्प चुनें जो आपको सबसे पसंदीदा लगे। हम उपयोग करेंगे एनपीएम, नोड पैकेज मैनेजर.
सीएलआई एप्लिकेशन को चलाने के लिए आवश्यक सभी आवश्यक कॉन्फ़िगरेशन फ़ाइलों और प्रारंभिक निर्भरताओं के साथ एक बुनियादी Nest.js प्रोजेक्ट तैयार करेगा।
अंत में, प्रोजेक्ट निर्देशिका पर जाएँ और विकास सर्वर प्रारंभ करें।
सीडी क्रुड-ऐप
एनपीएम रन प्रारंभ
आप इस प्रोजेक्ट का कोड इसमें पा सकते हैं GitHub भण्डार.
एक PostgreSQL डेटाबेस बनाएँ
यह ट्यूटोरियल क्लाउड PostgreSQL इंस्टेंस का उपयोग करता है, लेकिन आप इसके बजाय एक स्थानीय PostgreSQL डेटाबेस सेट कर सकते हैं। तुम कर सकते हो विंडोज़ पर PostgreSQL इंस्टॉल करें, macOS पर, या लिनक्स पर।
क्लाउड PostgreSQL इंस्टेंस सेट करने के लिए:
- वहां जाओ एलिफेंटएसक्यूएल, साइन अप करें और अपने खाते के अवलोकन पृष्ठ पर लॉग इन करें।
- क्लिक करें नया उदाहरण बनाएँ अपने एप्लिकेशन के लिए एक नया इंस्टेंस बनाने के लिए पृष्ठ के ऊपरी-बाएँ भाग पर बटन।
- अपने इंस्टेंस का नाम भरें, निःशुल्क योजना चुनें और अंत में सेटअप प्रक्रिया को पूरा करने के लिए क्षेत्र का चयन करें।
- डेटाबेस इंस्टेंस बनाने के बाद, पर जाएँ समायोजन पेज, और दिए गए को कॉपी करें डेटाबेस यूआरएल.
डेटाबेस कनेक्शन कॉन्फ़िगर करें
अपने प्रोजेक्ट की रूट डायरेक्टरी में, एक बनाएं .env डेटाबेस कनेक्शन URL को निम्नानुसार फ़ाइल और पेस्ट करें:
DATABASE_URL=''"
अब ये पैकेज इंस्टॉल करें:
एनपीएम इंस्टॉल पीजी टाइपोर्म @nestjs/typeorm @nestjs/config
इसके बाद, आगे बढ़ें और सीएलआई टूल का उपयोग करके एक डेटाबेस मॉड्यूल बनाएं।
नेस्ट जी मॉड्यूल डेटाबेस
खोलें डेटाबेस/डेटाबेस.मॉड्यूल.ts फ़ाइल बनाएं और निम्नलिखित डेटाबेस कॉन्फ़िगरेशन कोड जोड़ें:
आयात { मापांक } से'@nestjs/common';
आयात { कॉन्फिग मॉड्यूल, कॉन्फिग सर्विस } से'@nestjs/config';
आयात { टाइपऑर्ममॉड्यूल } से'@nestjs/typeorm';
आयात { उपयोगकर्ता } से'../उपयोगकर्ता/मॉडल/उपयोगकर्ता.entity';@मापांक({
आयात: [
typeOrmModule.forRootAsync({
आयात: [कॉन्फिग मॉड्यूल],
इंजेक्ट: [कॉन्फ़िगर सेवा],उपयोग फैक्टरी: async (कॉन्फिगसर्विस: कॉन्फिगसर्विस) => ({
प्रकार: 'पोस्टग्रेज',
यूआरएल: configService.get('DATABASE_URL'),
संस्थाएँ: [उपयोगकर्ता],
सिंक्रनाइज़ करें: सत्य
}),
}),
],
})
निर्यातकक्षा डेटाबेस मॉड्यूल {}
यह डेटाबेस मॉड्यूल आवश्यक कनेक्शन पैरामीटर, डेटाबेस यूआरएल के साथ टाइपओआरएम मॉड्यूल को कॉन्फ़िगर करके कनेक्शन को संभालता है।
इसके अतिरिक्त, यह उपयोगकर्ता इकाई को कॉन्फ़िगरेशन के भाग के रूप में परिभाषित करता है जो PostgreSQL डेटाबेस तालिका में संग्रहीत डेटा की संरचना और गुणों को निर्दिष्ट करता है।
इस स्तर पर, आपका कोड संभवतः एक त्रुटि देगा क्योंकि आपने अभी तक उपयोगकर्ता इकाई नहीं बनाई है। आप इसे निम्नलिखित चरणों में करेंगे.
App.module.ts फ़ाइल को अद्यतन करें
अंत में, डेटाबेस मॉड्यूल के लिए कॉन्फ़िगरेशन को शामिल करने के लिए मुख्य एप्लिकेशन मॉड्यूल को अपडेट करें।
आयात { मापांक } से'@nestjs/common';
आयात { कॉन्फ़िग मॉड्यूल } से'@nestjs/config';
आयात { ऐपकंट्रोलर } से'./app.controller';
आयात { ऐप सेवा } से'./app.service';
आयात { डेटाबेस मॉड्यूल } से'./डेटाबेस/डेटाबेस.मॉड्यूल';@मापांक({
आयात: [
configModule.forRoot({
envफ़ाइलपथ: '.env',
}),
डेटाबेस मॉड्यूल,
],नियंत्रक: [ऐपकंट्रोलर],
प्रदाता: [ऐपसेवा],
})
निर्यातकक्षा ऐपमॉड्यूल {}
उपयोगकर्ता मॉड्यूल को परिभाषित करें
उपयोगकर्ता मॉड्यूल एक केंद्रीकृत घटक के रूप में कार्य करता है, जो एपीआई की सीआरयूडी कार्यक्षमता को लागू करने के लिए आवश्यक तर्क को एन्क्रिप्ट करने और प्रबंधित करने के लिए जिम्मेदार है।
एपीआई के उपयोगकर्ता मॉड्यूल बनाने के लिए इस टर्मिनल कमांड को चलाएँ।
नेस्ट जी मॉड्यूल उपयोगकर्ता
सीएलआई टूल स्वचालित रूप से अपडेट हो जाता है ऐप.मॉड्यूल.ts उपयोगकर्ता मॉड्यूल बनाने के अलावा, किए गए परिवर्तनों को प्रतिबिंबित करने के लिए फ़ाइल। यह सुनिश्चित करता है कि नव निर्मित मॉड्यूल, उपयोगकर्ता, एप्लिकेशन के मॉड्यूल कॉन्फ़िगरेशन में ठीक से एकीकृत है।
एक उपयोगकर्ता इकाई बनाएं
टाइपओआरएम एक ऑब्जेक्ट-रिलेशनल मैपिंग (ओआरएम) लाइब्रेरी है जो जावास्क्रिप्ट ऑब्जेक्ट्स को डेटाबेस तालिकाओं में मैप करके टाइपस्क्रिप्ट का उपयोग करने वाले अनुप्रयोगों में डेटाबेस इंटरैक्शन को सरल बनाता है।
टाइपओआरएम का उपयोग करके एक उपयोगकर्ता इकाई बनाकर, आप PostgreSQL डेटाबेस में उपयोगकर्ता डेटा की संरचना और गुणों को परिभाषित करते हैं।
उपयोगकर्ता निर्देशिका में, एक नया बनाएं मॉडल/उपयोगकर्ता.entity.ts और निम्नलिखित कोड जोड़ें.
आयात { इकाई, प्राथमिक जेनरेटेड कॉलम, कॉलम, } से"टाइपोर्म";
@इकाई()
निर्यातकक्षा उपयोगकर्ता {
@PrimaryGeneratedColumn()
पहचान: संख्या;@कॉलम()
नाम: डोरी;
@कॉलम()
ईमेल: डोरी;
}
उपयोगकर्ता इकाई डेटाबेस में संग्रहीत उपयोगकर्ता डेटा की संरचना को परिभाषित करती है। इस मामले में, यही है पहचान प्राथमिक कुंजी कॉलम के रूप में, और नाम और ईमेल कॉलम और उनके संबंधित गुण।
CRUD API सेवा बनाएँ
अब, एपीआई सेवा बनाएं जो नीचे दिए गए आदेश को चलाकर सीआरयूडी संचालन के लिए तर्क का प्रबंधन करेगी:
नेस्ट जी सेवा उपयोगकर्ता
खोलें उपयोगकर्ता-auth.service.ts फ़ाइल करें और यह कोड जोड़ें:
आयात { इंजेक्शन } से'@nestjs/common';
आयात { इंजेक्टरिपोजिटरी } से'@nestjs/typeorm';
आयात { रिपॉजिटरी } से'टाइपोर्म';
आयात {उपयोगकर्ता} से'./मॉडल/उपयोगकर्ता.entity';@इंजेक्शन योग्य()
निर्यातकक्षा उपयोगकर्ता सेवा {
निर्माता(
@इंजेक्टरिपोजिटरी(उपयोगकर्ता)
निजी उपयोगकर्ता रिपॉजिटरी: रिपोजिटरी,
) {}async सब ढूँढ़ो(): वादा
{
वापस करनायह.userRepository.find();
}async फाइंडवन (आईडी: संख्या): वादा
{
वापस करनायह.userRepository.findOne({कहाँ: {id}});
}async बनाएं (उपयोगकर्ता: आंशिक
): वादा {
कॉन्स्ट नव उपयोक्ता = यह.userRepository.create (उपयोगकर्ता);
वापस करनायह.userRepository.save (newuser);
}async अद्यतन (आईडी: संख्या, उपयोगकर्ता: आंशिक
): वादा {
इंतजारयह.userRepository.update (आईडी, उपयोगकर्ता);
वापस करनायह.userRepository.findOne({कहाँ: {id}});
}
asyncमिटाना(पहचान: संख्या): वादा<खालीपन> {
इंतजारयह.userRepository.delete (आईडी);
}
}
यह UserService वर्ग CRUD संचालन को संभालने के लिए समर्पित विभिन्न API विधियों को परिभाषित करता है। इन तरीकों में सभी उपयोगकर्ताओं का डेटा प्राप्त करना, उनके आईडी नंबर का उपयोग करके एक विशिष्ट उपयोगकर्ता ढूंढना, बनाना शामिल है एक नया उपयोगकर्ता, एक मौजूदा उपयोगकर्ता को अपडेट करना, और डेटाबेस में किसी विशिष्ट उपयोगकर्ता के डेटा को हटाने की एक विधि।
एपीआई के लिए एक नियंत्रक को परिभाषित करें
एक नियंत्रक बनाएं जो उपयोगकर्ता-संबंधित संचालन के लिए एपीआई एंडपॉइंट का प्रबंधन करेगा।
नेस्ट जी नियंत्रक उपयोगकर्ता
इसके बाद, नीचे दिए गए कोड को इसमें जोड़ें उपयोगकर्ता.नियंत्रक.ts फ़ाइल।
आयात {कंट्रोलर, प्राप्त करें, पोस्ट करें, बॉडी, पुट, परम, डिलीट, नॉटफाउंडएक्सेप्शन, HttpCode } से'@nestjs/common';
आयात { उपयोगकर्ता सेवा } से'./users.service';
आयात { उपयोगकर्ता } से'./मॉडल/उपयोगकर्ता.entity';@नियंत्रक('एपीआई/उपयोगकर्ता')
निर्यातकक्षा उपयोगकर्ता नियंत्रक {
निर्माता(निजी केवल पढ़ने योग्य उपयोगकर्ता सेवा: उपयोगकर्ता सेवा) {}@पाना()
async सब ढूँढ़ो(): वादा{
वापस करनायह.usersService.findAll();
}@डाक()
@HttpCode(201)
async बनाएं(@शरीर() उपयोगकर्ता: उपयोगकर्ता): वादा{
कॉन्स्ट बनाया गया उपयोगकर्ता = इंतजारयह.usersService.create (उपयोगकर्ता);
वापस करना createUser;
}@रखना(':पहचान')
async अद्यतन (@परम('पहचान') पहचान: संख्या, @शरीर() उपयोगकर्ता: उपयोगकर्ता): वादा<कोई> {
इंतजारयह.usersService.update (आईडी, उपयोगकर्ता);
वापस करना { संदेश: 'उपयोगकर्ता सफलतापूर्वक अपडेट किया गया' };
}@मिटाना(':पहचान')
asyncमिटाना(@परम('पहचान') पहचान: संख्या): वादा<कोई> {
कॉन्स्ट उपयोगकर्ता = इंतजारयह.usersService.findOne (आईडी);अगर (! उपयोगकर्ता) {
फेंकनानया NotFoundException('उपभोगकर्ता मौजूद नहीं!');
}
इंतजारयह.usersService.delete (आईडी);
वापस करना { संदेश: 'उपयोगकर्ता सफलतापूर्वक हटा दिया गया' };
}
}
नियंत्रक उपयोगकर्ता संचालन के लिए एपीआई एंडपॉइंट का प्रबंधन करता है। यह सभी उपयोगकर्ताओं को पुनः प्राप्त करने के लिए GET अनुरोध, नए उपयोगकर्ता बनाने के लिए POST अनुरोध, मौजूदा उपयोगकर्ताओं को अपडेट करने के लिए PUT अनुरोध और उपयोगकर्ताओं को हटाने के लिए DELETE अनुरोधों को संभालता है।
का उपयोग करके उपयोगकर्ता सेवा और के साथ बातचीत कर रहा है उपयोगकर्ता इकाई, यह नियंत्रक डेटाबेस में संग्रहीत डेटा पर उपयोगकर्ता-संबंधित संचालन के प्रबंधन के लिए एक संपूर्ण एपीआई प्रदान करता है।
Users.module.ts फ़ाइल को अद्यतन करें
अंत में, अद्यतन करें उपयोगकर्ता.मॉड्यूल.ts यह सुनिश्चित करने के लिए कि आप इसमें शामिल हैं, नीचे दिखाए अनुसार फ़ाइल करें उपयोगकर्ता इकाई और टाइपओआरएम मॉड्यूल, जो डेटाबेस से कनेक्शन स्थापित करता है।
आयात { मापांक } से'@nestjs/common';
आयात { उपयोगकर्ता नियंत्रक } से'./users.controller';
आयात { उपयोगकर्ता सेवा } से'./users.service';
आयात { टाइपऑर्ममॉड्यूल } से'@nestjs/typeorm';
आयात { उपयोगकर्ता } से'./मॉडल/उपयोगकर्ता.entity';@मापांक({
आयात: [TypeOrmModule.forFeature([उपयोगकर्ता])],
नियंत्रक: [उपयोगकर्ता नियंत्रक],
प्रदाता: [उपयोगकर्ता सेवा]
})
निर्यातकक्षा उपयोगकर्ता मॉड्यूल {}
अंत में, आगे बढ़ें, और पोस्टमैन का उपयोग करके सीआरयूडी संचालन का परीक्षण करने के लिए विकास सर्वर को स्पिन करें।
एनपीएम रन प्रारंभ
सर्वर पोर्ट 3000 पर शुरू होगा, और आप इस पर एपीआई अनुरोध भेज सकते हैं http://localhost: 3000/एपीआई/उपयोगकर्ता.
Nest.js के साथ बैकएंड एप्लिकेशन बनाना
चाहे आप एक साधारण REST API या एक जटिल वेब ऐप विकसित कर रहे हों, Nest.js एक विश्वसनीय और मजबूत बैकएंड सिस्टम बनाने के लिए सुविधाओं और क्षमताओं का एक व्यापक सेट प्रदान करता है।
Nest.js, Express.js की तुलना में परियोजना विकास के लिए अधिक संरचित दृष्टिकोण प्रदान करता है। यह सुनिश्चित करता है कि आप इसके संगठित और मॉड्यूलर डिज़ाइन पैटर्न की बदौलत आत्मविश्वास से जटिल अनुप्रयोगों का निर्माण, स्केल और रखरखाव कर सकते हैं।