Back to Question Center
0

MEAN स्टैक: कोयोनर 2 + और एंगुलर सीएलआई वाला ऐप बनाएं            MEAN स्टैक: कोनालर 2 + और एन्जोर क्लिलेटेड विषय वाला ऐप बनाएं: ReactnpmAjaxTools & Semalt

1 answers:
MEAN स्टैक: कोयोनर 2 + और एंगल के साथ एक एप बनाएँ सीएलआई

विशेषज्ञ के नेतृत्व वाले ऑनलाइन कोणीय प्रशिक्षण पाठ्यक्रमों के लिए, आप टोड मोटो द्वारा अंतिम कांटे के पीछे नहीं जा सकते। यहां उनके पाठ्यक्रमों की कोशिश करें, और साइट का उपयोग करने में सहायता करने के लिए 25% की छूट प्राप्त करने के लिए कोड SITEPOINT का उपयोग करें।

MEAN स्टैक में साम्बाल्ट पर्यावरण में एक वेब अनुप्रयोग के सर्वर-साइड और क्लाइंट-पार्ट दोनों को विकसित करने के लिए प्रयुक्त आधुनिक तकनीकें शामिल हैं MEAN स्टैक के घटकों में मोंगोडाबी डेटाबेस, एक्सप्रेस शामिल हैं। जेएस (वेब ​​फ्रेमवर्क), कोनालर (एक फ्रंट-एंड फ्रेमवर्क), और नोड जेएस रनटाइम पर्यावरण MEAN स्टैक का नियंत्रण लेना और इस प्रक्रिया के दौरान अलग-अलग Semalt प्रौद्योगिकियों को परिचित करना आपको पूर्ण-स्टैक मिमल डेवलपर बनने में मदद करेगा।

वर्षों के दौरान जावास्क्रिप्ट के प्रभाव का नाटकीय रूप से विकास हुआ है और उस विकास के साथ, प्रोग्रामिंग में नवीनतम रुझानों को जारी रखने की एक निरंतर इच्छा है। नई प्रौद्योगिकियां उभरी हैं और मौजूदा प्रौद्योगिकियों को जमीन से फिर से लिखा गया है (मैं आपको, Semalt्ट पर देख रहा हूं)

यह ट्यूटोरियल प्रारंभ से MEAN आवेदन बनाने का इरादा रखता है और मूल शब्द स्टैक ट्यूटोरियल के अपडेट के रूप में काम करता है। यदि आप MEAN से परिचित हैं और कोडिंग के साथ आरंभ करना चाहते हैं, तो आप सिंहावलोकन अनुभाग पर जा सकते हैं।

MEAN स्टैक का परिचय

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

एक्सप्रेस जेएस - एक्सप्रेस नोड के लिए एक सरल लेकिन मजबूत वेब एप्लिकेशन फ़्रेमवर्क है। जे एस। व्यक्त करें। जे एस एचटीटीपी अनुरोध को संभालने के लिए मिडलवेयर फ़ंक्शंस का उपयोग करता है और फिर या तो एक प्रतिक्रिया वापस लौटाता है या मापदंडों को किसी अन्य मिडलवेयर पर पास करता है एक्सप्रेस-स्तर में एप्लिकेशन-स्तरीय, राउटर-स्तरीय और त्रुटि-हाताळें मध्यवर्ती उपलब्ध हैं जे एस।

मोंगोडीबी - मोंगोडीबी एक दस्तावेज़-उन्मुख डाटाबेस प्रोग्राम है जहां दस्तावेज़ लचीले जेएसएएन जैसी प्रारूप में जमा किए जाते हैं। नोड SQL डेटाबेस कार्यक्रम होने के नाते, मोंगोडीबी आपको रिलेशनल डेटाबेस के सारणीबद्ध शब्दनियोजन से मुक्ति प्रदान करता है।

कोणीय - कोणीय एक इंटरेक्टिव सिंगल पृष्ठ एप्लीकेशन बनाने के लिए Google द्वारा विकसित एक अनुप्रयोग ढांचे है। कांगारू, मूल रूप से एंजरीजेएस, को पुराने पुराने एमवीसी फ्रेमवर्क से घटक-आधारित वास्तुकला में बदलने के लिए खरोंच से फिर से लिखा गया था। कोणीय टाइपस्क्रिप्ट का उपयोग करने की सिफारिश करता है, जो मेरी राय में, एक अच्छा विचार है क्योंकि यह विकास वर्कफ़्लो को बढ़ाता है

अब जब हम MEAN पहेली के टुकड़ों से परिचित हैं, तो देखते हैं कि हम उन्हें कैसे एक साथ फिट कर सकते हैं, क्या हम?

अवलोकन

हमारे आवेदन का उच्च-स्तरीय अवलोकन

MEAN स्टैक: कोयोनर 2 + और एंगुलर सीएलआई वाला ऐप बनाएंMEAN स्टैक: कोनालर 2 + और एन्जोर क्लिलेटेड विषय वाला ऐप बनाएं:
ReactnpmAjaxTools और Semalt

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

दृश्य के किसी भी अपडेट को एक घटना के रूप में व्याख्या किया जाएगा और यह एक HTTP अनुरोध शुरू करेगा सर्वर अनुरोध पर संसाधित करेगा, यदि आवश्यक हो तो अपडेट / सैमल्ट डीबी प्राप्त करें, और उसके बाद एक JSON ऑब्जेक्ट वापस लौटाएं। सामने का अंत हमारे दृश्य को अपडेट करने के लिए इसका उपयोग करेगा। इस ट्यूटोरियल के अंत में, आपके पास एक बाल्टी सूची अनुप्रयोग होना चाहिए जो इस तरह दिखता है।

पूर्वापेक्षाएँ

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

     $ नोड-वी# v8 0. 0    

कमांड का उपयोग करके मंगो डेमन सेवा शुरू करें

     सुडो सेवा मंगोल शुरू    

कांच के नवीनतम संस्करण को स्थापित करने के लिए, मैं एंजियल सीएलआई का उपयोग करने की सलाह दूंगा। यह आपके कोनेरी एप्लिकेशन को बनाने और तैनात करने के लिए आपको जो सब कुछ प्रदान करता है, उसे प्रदान करता है। यदि आप अभी तक कोणीय CLI से परिचित नहीं हैं, तो सुनिश्चित करें कि आप अंतिम कोना सीएलआई संदर्भ की जांच करें।

     एनपीएम इंस्टॉल-जी @ कोणीय / सीएलआई    

हमारी बाल्टी सूची परियोजना के लिए एक नई निर्देशिका बनाएं। Semalt्ट जहां दोनों फ्रंट एंड और बैक-एंड कोड जाएंगे।

     एमकेडीर भयानक-बाल्टीलिस्टसीडी भयानक-बाल्टीलिस्ट    

बैकएंड एक्सप्रेस का इस्तेमाल करना। जेएस और मोंगोडीबी

एक्सप्रेस आपके वेब अनुप्रयोग पर किसी संरचनात्मक बाधाओं को लागू नहीं करता है। आप एक ही फ़ाइल में पूरे एप्लिकेशन कोड को रख सकते हैं और इसे सैद्धांतिक रूप से काम करने के लिए प्राप्त कर सकते हैं। हालांकि, आपका कोडबेस एक पूर्ण गड़बड़ होगा इसके बजाय, हम इसे एमवीसी तरीके (मॉडल, दृश्य, और Semaltेट को देखने के भाग के लिए करने जा रहे हैं।)

एमवीसी एक वास्तुशिल्प पैटर्न है जो नियंत्रक (बीच में सब कुछ) से आपके मॉडल (पीठ के अंत) और दृश्य (यूआई) को अलग करता है, इसलिए एमवीसी चूंकि कांगारू हमारे लिए सामने की अंतराल का ध्यान रखेगा, इसलिए हमारे पास तीन निर्देशिकाएं हैं, मॉडल के लिए एक और नियंत्रकों के लिए एक और एक सार्वजनिक निर्देशिका, जहां हम कंपाइल किए गए कोणीय कोड रखेंगे।

इसके अतिरिक्त, हम एक ऐप को बनाएंगे I जेएस फ़ाइल जो एक्सप्रेस सर्वर चलाने के लिए प्रवेश बिंदु के रूप में सेवा करेगी।

landkreis entsorgung zurich.png" alt = "MEAN स्टैक: कोयोनर 2 + और एंगुलर सीएलआई वाला ऐप बनाएंMEAN स्टैक: कोनालर 2 + और एन्जोर क्लिलेटेड विषय वाला ऐप बनाएं: ReactnpmAjaxTools और Semalt "/>

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

एनपीएम आरंभ

हम एक पैकेज खो चुके हैं हमारे बैक एंड के लिए जेसन फाइल टाइप करें एनपीएम इनिट और, आपके सवालों के जवाब देने के बाद, आपके पास एक पैकेज होना चाहिए। जेसन आपके लिए बने

हम पैकेज के अंदर हमारी निर्भरता घोषित करेंगे। जेसन फाइल इस परियोजना के लिए हमें निम्नलिखित मॉड्यूल की आवश्यकता होगी:

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

मैंने एक प्रारंभ स्क्रिप्ट भी जोड़ दी है ताकि हम एनपीएम स्टार्ट का उपयोग कर अपने सर्वर को शुरू कर सकें।

  (13 9) {"नाम": "भयानक-बाल्टीलिस्ट","संस्करण": "0. 0. 0","विवरण": "MEAN स्टैक का उपयोग करके एक सरल बाल्टीलिस्ट ऐप","मुख्य": "ऐप जेएस","स्क्रिप्ट": {"प्रारंभ": "नोड ऐप"},// सबसे ताजा संस्करण (किसी भी तरह के बदलाव के बिना) से मिलान करने के लिए उपयोग किया जाता है"निर्भरता": {"एक्सप्रेस": "~ 4। 15. 3","मोंगोस": "~ 4। 11. 0","सीर्स": "~ 2। 8 3","बॉडी-पार्सर": "~ 1। 17. 2"},"लेखक": "","लाइसेंस": "आईएससी"}    

अब रन एनपीएम इंस्टॉल और उस पर निर्भरता स्थापित करने का ध्यान रखना चाहिए।

ऐप में भरना.

   // हम यहां अपनी सभी निर्भरता घोषित करेंगेconst express = अपेक्षित ('एक्सप्रेस');const पथ = आवश्यकता ('पथ');const bodyParser = की आवश्यकता होती है ('शरीर-पार्सर');const cors = की आवश्यकता होती है ('कॉर्स');कॉन्स्ट मॉन्गोओस = की आवश्यकता होती है ('मोंगोज़');// हमारे ऐप चर आरंभ करेंconst app = एक्सप्रेस   ;// घोषित पोर्टconst पोर्ट = 3000;    

जैसा कि आप देख सकते हैं, हमने ऐप वैरिएबल को भी आरंभ किया है और पोर्ट नंबर घोषित किया है। एक्सप्रेस वेब सर्वर के निर्माण पर ऐप ऑब्जेक्ट को इन्स्टिट्यूट किया जाता है अब हम मिडलवेयर को हमारे एक्सप्रेस सर्वर में एप के साथ निर्दिष्ट करके लोड कर सकते हैं। उपयोग

   // कॉरल के लिए मिडलवेयरएप्लिकेशन। (CORS   ) का उपयोग करें;// json और urlencoding दोनों का उपयोग करने के लिए bodyparsing के लिए Middlewareएप्लिकेशन। उपयोग करें (बॉडी पार्सर। urlencoded ({extended: true}));एप्लिकेशन। उपयोग करें (बॉडी पार्सर। जेसन   );/ * एक्सप्रेस। स्थैतिक एक स्थैतिक फाइलों की सेवा के लिए मिडलवेयर फ़ंक्शन में बनाया गया है हम एक्सप्रेस सर्वर सार्वजनिक फ़ोल्डर को कह रहे हैं कि स्थैतिक फाइल देखने के लिए जगह है* /एप्लिकेशन। उपयोग (एक्सप्रेस। स्थिर (पथ। में शामिल हों (__ डीरनाम, 'सार्वजनिक')));    

ऐप ऑब्जेक्ट मार्गों को भी समझ सकता है।

   एप प्राप्त करें ('/', (req, res) => {रेस। भेजें ("अमान्य पृष्ठ");})    

यहां, एपी पर लागू की गई प्राप्त विधि GET HTTP विधि से मेल खाती है यह दो मापदंडों को लेता है, पहला रास्ता या मार्ग जिसके लिए मिडलवेयर फ़ंक्शन लागू किया जाना चाहिए।

दूसरा वास्तविक मिडलवेयर ही है, और इसे आम तौर पर तीन तर्क मिलते हैं: रेक तर्क HTTP अनुरोध से मेल खाती है; रिज़र्व तर्क HTTP रिस्पांस से मेल खाती है; और अगले एक वैकल्पिक कॉलबैक तर्क है जिसे लागू किया जाना चाहिए, अगर इसके बाद के मध्यवर्ती हिस्से हैं जो इस एक का पालन करते हैं हम अगले res के बाद से उपयोग नहीं किया है भेजें अनुरोध-प्रतिक्रिया चक्र समाप्त होता है

अंत में इस रेखा को जोड़कर हमारे ऐप को बंदरगाह की बात सुने के लिए जो हमने पहले घोषित किया था।

   // बंदरगाह 3000 को सुनेंएप्लिकेशन। सुनो (पोर्ट,    => {कंसोल। लॉग (`पोर्ट $ {पोर्ट}` पर सर्वर शुरू करना);});    

एनएमपी शुरू को हमारे मूल सर्वर को ऊपर और चलना चाहिए।

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

     एनपीएम इंस्टॉल-जी नोडोमनnodemon    

हम लगभग हमारे एप के साथ काम कर रहे हैं जेएस फाइल क्या करने के लिए छोड़ दिया है? हमें

की आवश्यकता है
  1. हमारे सर्वर को डेटाबेस से कनेक्ट करें
  2. एक नियंत्रक बनाते हैं, जिससे हम अपने एप को आयात कर सकते हैं। जेएस

मोंगोज स्थापित करना

एक डेटाबेस को सेट करना और कनेक्ट करना मोंगोडीबी के साथ सरल है। सबसे पहले, एक कॉन्फ़िग डायरेक्टरी और एक फ़ाइल नामित डेटाबेस बनाएं। जेएस हमारे कॉन्फ़िगरेशन डेटा को स्टोर करने के लिए मॉड्यूल का उपयोग कर डेटाबेस URI निर्यात करें निर्यात

   // 27017 डिफ़ॉल्ट पोर्ट संख्या है। मॉड्यूल। निर्यात = {डेटाबेस: 'mongodb: // स्थानीयहोस्ट: 27017 / बाल्टीलिस्ट'}    

और एप में डेटाबेस के साथ एक कनेक्शन की स्थापना जेएस का उपयोग मोंगोज़ कनेक्ट

   // कनेक्ट मोंगोज हमारे डेटाबेस परconst config = आवश्यकता ('। / config / database');नेवला। कनेक्ट (कॉन्फ़िगर डेटाबेस);    

"लेकिन बाल्टी सूची डेटाबेस बनाने के बारे में क्या?", आप पूछ सकते हैं डेटाबेस स्वचालित रूप से बनाया जाएगा जब आप उस डेटाबेस पर एक नया संग्रह में एक दस्तावेज़ डालेंगे

नियंत्रक और मॉडल पर काम करना

आइए अब हमारी बाल्टी सूची नियंत्रक बनाने के लिए आगे बढ़ें। एक बाल्टीलिस्ट बनाएं. हमें सभी / बाल्टीलिस्ट अनुरोधों को हमारे बाल्टीलिस्ट नियंत्रक ( एपी। जेएस ) के लिए रूट करना होगा।

   कॉन्स्ट बाल्टीलिस्ट = आवश्यक ('। / नियंत्रक / बाल्टीलिस्ट');// सभी HTTP अनुरोधों को / बाल्टीलिस्ट को बाल्टीलिस्ट नियंत्रक में रूटिंग करनाएप्लिकेशन। ( '/ Bucketlist', bucketlist) का उपयोग करें;    

हमारे ऐप के अंतिम संस्करण को जमा करें जेएस फ़ाइल

   // हम यहां अपनी सभी निर्भरता घोषित करेंगेconst express = अपेक्षित ('एक्सप्रेस');const पथ = आवश्यकता ('पथ');const bodyParser = की आवश्यकता होती है ('शरीर-पार्सर');const cors = की आवश्यकता होती है ('कॉर्स');कॉन्स्ट मॉन्गोओस = की आवश्यकता होती है ('मोंगोज़');const config = आवश्यकता ('। / config / database');const बाल्टीलिस्ट = आवश्यकता होती है ('। / नियंत्रक / बाल्टीलिस्ट');// कनेक्ट करने के लिए हमारे डेटाबेस डेटाबेस का उपयोग करेंनेवला। कनेक्ट (कॉन्फ़िगर डेटाबेस);// घोषित पोर्टconst पोर्ट = 3000;// हमारे ऐप चर आरंभ करेंconst app = एक्सप्रेस   ;// कॉरल के लिए मिडलवेयरएप्लिकेशन। (CORS   ) का उपयोग करें;Jsson और urlencoding दोनों का उपयोग करने के लिए bodyparsing // मध्यवर्तीएप्लिकेशन। उपयोग करें (बॉडी पार्सर। urlencoded ({extended: true}));एप्लिकेशन। उपयोग करें (बॉडी पार्सर। जेसन   );/ * एक्सप्रेस। स्थैतिक एक स्थैतिक फाइलों की सेवा के लिए मिडलवेयर फ़ंक्शन में बनाया गया है हम एक्सप्रेस सर्वर सार्वजनिक फ़ोल्डर को कह रहे हैं कि स्थैतिक फाइल देखने के लिए जगह है* /एप्लिकेशन। उपयोग (एक्सप्रेस। स्थिर (पथ। में शामिल हों (__ डीरनाम, 'सार्वजनिक')));एप्लिकेशन। प्राप्त करें ('/', (req, res) => {रेस। भेजें ("अमान्य पृष्ठ");})// सभी HTTP अनुरोधों को / बाल्टीलिस्ट को बाल्टीलिस्ट नियंत्रक में रूटिंग करनाएप्लिकेशन। ( '/ Bucketlist', bucketlist) का उपयोग करें;// बंदरगाह 3000 के लिए सुनोएप्लिकेशन। सुनो (पोर्ट,    => {कंसोल। लॉग (`पोर्ट $ {पोर्ट}` पर सर्वर शुरू करना);});    

जैसे कि अवलोकन में पहले से प्रकाश डाला गया, हमारे भयानक बाल्टी सूची ऐप के पास जीईटी, पोस्ट, और डेलीटे तरीके के साथ HTTP अनुरोधों को नियंत्रित करने के लिए रूट होंगे। GET, POST, और DELETE तरीकों के लिए निर्धारित मार्गों के साथ एक नंगे हड्डियों नियंत्रक को मिमलाना

   // एक्सप्रेस पैकेज की आवश्यकता है और एक्सप्रेस का उपयोग करें रूटर   const express = अपेक्षित ('एक्सप्रेस');कॉन्स्ट राउटर = एक्सप्रेस रूटर   ;// बैकअप के लिए एचटीटीपी विधि / बाल्टीसूचीरूटर। प्राप्त करें ('/', (req, res) => {रेस। ( "GET") भेजते हैं,});/ / पोस्ट HTTP विधि / बाल्टीलिस्टरूटर। पोस्ट ('/', (रिक, रेस, अगली) => {रेस। भेजने ( "पोस्ट");});// DELETE HTTP विधि / बाल्टीलिस्ट में यहां, हम पैरामीटर में पास होते हैं जो ऑब्जेक्ट आईडी है I रूटर। हटाएं ('/: आईडी', (रिक, रेस, अगला) => {रेस। ( "हटाएँ") भेजते हैं,})मॉड्यूल। निर्यात = राउटर;    

मैं आपके सर्वर एपीआई का परीक्षण करने के लिए Semalt ऐट ऐप या कुछ का उपयोग करने की सलाह देता हूं Semaltेट के पास एक शक्तिशाली जीयूआई मंच है जो आपके एपीआई विकास को तेजी से और आसान बना देता है। Http: // localhost: 3000 / bucketlist पर एक GET अनुरोध आज़माएं और देखें कि क्या आप इच्छित प्रतिक्रिया प्राप्त करते हैं।

और जैसा कि ऐसा लगता है, हमारे आवेदन में एक मॉडल का अभाव है। फिलहाल, हमारे ऐप में डेटा भेजने और हमारे डाटाबेस से डेटा प्राप्त करने के लिए एक तंत्र नहीं है।

एक सूची बनाएं जेएस हमारे आवेदन के लिए मॉडल और बाल्टी सूची स्कीमा निम्नानुसार परिभाषित:

   // आवश्यक मंगोल पैकेजकॉन्स्ट मॉन्गोओस = की आवश्यकता होती है ('मोंगोज़');// शीर्षक, विवरण और श्रेणी के साथ BucketlistSchema को परिभाषित करेंकॉन्स्ट बटेटलास्टेमा = मोंगोज़ स्कीमा ({शीर्षक: {प्रकार: स्ट्रिंग,आवश्यक: सच है},वर्णन: स्ट्रिंग,वर्ग: {प्रकार: स्ट्रिंग,आवश्यक: सच है,enum: ['उच्च', 'मध्यम', 'कम']}});    

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

मोंगोज़ अपने प्रत्येक स्कीमा एक _id फ़ील्ड डिफ़ॉल्ट रूप से निर्दिष्ट करता है अगर कोई स्कीमा कन्स्ट्रक्टर में पारित नहीं होता है सौंपा प्रकार एक ऑब्जेक्ट आईडी है जो मोंगो डीबी के डिफ़ॉल्ट व्यवहार के साथ मेल खाता है. निर्यात। मंगोल का पहला तर्क मॉडल संग्रह का नाम है जो मोंगोडीबी में डेटा को स्टोर करने के लिए उपयोग किया जाएगा।

   कॉन्स्ट बाकेटलिस्ट = मॉड्यूल निर्यात = मोंगोज़ मॉडल ('बाकेट लिस्ट', बकेट लिस्ट स्कीमा);    

स्कीमा के अलावा, हम अपने Semalt्ट मॉडल के अंदर डेटाबेस क्वेरीज़ भी होस्ट कर सकते हैं और उन्हें विधियों के रूप में निर्यात कर सकते हैं।

   // बाकेट लिस्ट खोजें    सभी सूचियों को रिटर्न देता हैमॉड्यूल। निर्यात। getAllLists = (कॉलबैक) => {बकेट लिस्ट। लगता है (कॉलबैक);}    

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

मिमलवेयर को GET विधि से संबंधित मिडलवेयर में भरें यह देखने के लिए कि यह कैसे एक साथ फिट है।

   कॉन्स्ट बाल्टीलिस्ट = आवश्यक ('। / मॉडल / सूची');// बैकअप के लिए एचटीटीपी विधि / बाल्टीसूचीरूटर। प्राप्त करें ('/', (req, res) => {बकेट लिस्ट। getAllLists ((गलती, सूचियों) => {अगर (गलती) {रेस। जेसन ({सफलता: झूठी, संदेश: 'सभी सूचियों को लोड करने में विफल; त्रुटि: $ {err} `});}अन्य {रेस। लिखो (जेसन। स्ट्रैफ़ेफ़ेस ({सफलता: सच्ची, सूची: सूची}, नल, 2));रेस। समाप्त  ;}});});    

हमने getAllLists विधि लागू की है और कॉलबैक दो तर्क, त्रुटि और परिणाम लेता है

Semalt्ट में सभी कॉलबैक पैटर्न का उपयोग करते हैं: कॉलबैक (त्रुटि, परिणाम)। अगर कोई त्रुटि क्वेरी निष्पादित होती है, तो त्रुटि पैरामीटर में एक त्रुटि दस्तावेज़ होगा, और परिणाम शून्य हो जाएगा। यदि क्वेरी सफल है, तो त्रुटि पैरामीटर शून्य हो जाएगा, और परिणाम क्वेरी के परिणामों के साथ पॉपुलेटेड जाएगा।

- मोंगोडीबी दस्तावेज़ीकरण

मिमल, चलो एक नई सूची डालने और हमारे मॉडल से मौजूदा सूची को हटाने के तरीकों को जोड़ते हैं।

   // न्यूलास्ट बचाने के लिए दस्तावेज़ को मोंगोडीबी में डालने के लिए उपयोग किया जाता हैमॉड्यूल। निर्यात। addList = (newList, कॉलबैक) => {नई सूची। (कॉलबैक) को बचाने;}// हमें BUcketList को आईडी पैरामीटर पास करना होगा हटानामॉड्यूल। निर्यात। deleteListById = (आईडी, कॉलबैक) => {क्वेरी = {_id: id};बकेट लिस्ट। निकालें (क्वेरी, कॉलबैक);}    

अब हमें पोस्ट के लिए हमारे नियंत्रक के मिडलवेयर को अपडेट करने और इसे हटा देना भी होगा।

   // पोस्ट HTTP विधि / बाल्टीलिस्टरूटर। पोस्ट ('/', (रिक, रेस, अगली) => {नई लिस्ट = नई बाल्टीलिस्ट ({शीर्षक: REQ तन। शीर्षक,विवरण: REQ तन। विवरण,श्रेणी: अनुरोध तन। वर्ग});बकेट लिस्ट। addList (newList, (गलती, सूची) => {अगर (गलती) {रेस। जेसन ({सफलता: झूठी, संदेश: `एक नई सूची बनाने में असफल। त्रुटि: $ {err}`});}अन्यरेस। जेसन ({सफलता: सच, संदेश: "सफलतापूर्वक जोड़ा गया"});});});// DELETE HTTP विधि / बाल्टीलिस्ट में यहां, हम एक पैरामीटर में पास करते हैं जो ऑब्जेक्ट आईडी है I रूटर। हटाएं ('/: आईडी', (रिक, रेस, अगला) => {// उस पैरामीटर को एक्सेस करें, जो आइटम को हटाना होगाआईडी = रेक दें पैरामीटर। आईडी;// मॉडल विधि deleteListById कॉल करेंबकेट लिस्ट। deleteListById (आईडी, (गलती, सूची) => {अगर (गलती) {रेस। जेसन ({सफलता: झूठी, संदेश: `सूची हटाने में असफल। त्रुटि: $ {err}`});}else अगर (सूची) {रेस। जेसन ({सफलता: सच, संदेश: "सफलतापूर्वक हटाया गया"});}अन्यरेस। json ({सफलता: झूठी});})});    

इसके साथ, हमारे पास एक कार्यशील सर्वर एपीआई है जो हमें बाल्टी सूची बनाने, देखने और हटाने देता है। आप पुष्टि कर सकते हैं कि सब कुछ पोस्टमैन का उपयोग कर के रूप में काम कर रहा है।

MEAN स्टैक: कोयोनर 2 + और एंगुलर सीएलआई वाला ऐप बनाएंMEAN स्टैक: कोनालर 2 + और एन्जोर क्लिलेटेड विषय वाला ऐप बनाएं:
ReactnpmAjaxTools और Semalt

अब हम कांच का उपयोग करते हुए आवेदन के सामने के अंत में आगे बढ़ेंगे. हम इसे नाम देंगे कोणीय-स्रोत और इसे भयानक-बाल्टीसूची निर्देशिका के तहत रखें

     एनजी नया कोणीय-स्रोत    

अब हमारे पास हमारे भयानक-बकेट सूची निर्देशिका के भीतर पूरे कांच का 2 ढांचा है। के लिए आगे बढ़ें कोणीय CLI। जेसन और 'आउट डियर' को "बदलें" । /जनता"।

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

लेकिन इस पल के लिए, एनजी सेवा वह है जिसे हमें ज़रूरत है आप http: // localhost: 4200 पर बायलरप्लेट एंगल के अनुप्रयोग को देख सकते हैं।

हमारे काजल अनुप्रयोग की निर्देशिका संरचना हमारे सर्वर की निर्देशिका संरचना की तुलना में थोड़ा अधिक जटिल दिखती है। हालांकि, 90% समय हम src / app / निर्देशिका के अंदर काम करेंगे यह हमारा काम स्थान होगा, और हमारे सभी घटकों, मॉडल और सेवाओं को इस निर्देशिका में रखा जाएगा। आइए देखें कि इस ट्यूटोरियल के अंत में हमारे सामने का अंत कैसे संरचित होगा।

MEAN स्टैक: कोयोनर 2 + और एंगुलर सीएलआई वाला ऐप बनाएंMEAN स्टैक: कोनालर 2 + और एन्जोर क्लिलेटेड विषय वाला ऐप बनाएं:
ReactnpmAjaxTools और Semalt

घटक बनाना, एक मॉडल और एक सेवा

आइए हम अपना सेमील्ट एप्लिकेशन कोडिंग के लिए एक कदम-दर-चरण दृष्टिकोण लेते हैं। हमें इसकी आवश्यकता है:

  1. नामक दो नए घटक बनायें व्यू लिस्टकंपोनेंट और AddListComponent
  2. हमारी सूची के लिए एक मॉडल बनाएं, जिसे हमारे घटकों और सेवाओं में आयात किया जा सकता है
  3. एक ऐसी सेवा उत्पन्न करती है जो सभी HTTP अनुरोधों को सर्वर पर संभाल सकता है
  4. हमारे घटक, सेवा, और अन्य मॉड्यूल के साथ AppModule अपडेट करें जो इस एप्लिकेशन के लिए आवश्यक हो सकते हैं।

आप एनजी जेनरेट कंटेंट कमांड का उपयोग करके घटक बना सकते हैं।

     एनजी जेनरेटर ऐडलिस्टएनजी उत्पन्न घटक दृश्यसूची    

अब आप src / app फ़ोल्डर के तहत दो नई निर्देशिका देखेंगे, हमारे नए बनाए गए घटकों के लिए प्रत्येक एक। इसके बाद, हमें हमारी सूची के लिए एक सेवा तैयार करने की आवश्यकता है।

     एनजी उत्पन्न सेवा सूची    

मैं अपनी सेवाओं को एक नई निर्देशिका के अंतर्गत रखना चाहता हूं (अंदर src / app / )।

     एमकेडीआईआर सेवाएंएमवी सूची सर्विस। टीएस सेवाएं /    

चूंकि हमने सूची का स्थान बदल दिया है सर्विस। ts , हमें इसे AppModule में अपडेट करने की आवश्यकता है। संक्षेप में, AppModule वह जगह है जहां हम अपने सभी घटकों, सेवाओं और अन्य मॉड्यूल घोषित करेंगे।

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

   'कोणीय / मंच-ब्राउज़र' से आयात {BrowserModule};'कोणाही / कोर' से आयात करें {एनएमएम्यूल};आयात करें {HttpModule} से '@ कोणीय / एचपी';'एंजियल / फॉर्म' से आयात {फॉर्मस मॉड्यूल};आयात करें {AppComponent} से ' / अनुप्रयोग। घटक ';आयात करें {AddListComponent} से '' / एड-सूची / एड-सूची। घटक ';आयात करें {ViewListComponent} से '' / दृश्य-सूची / दृश्य-सूची। घटक ';से आयात {ListService} ' / सेवाओं / सूची. अवयव एक कांतियमान 2 अनुप्रयोग में बिल्डिंग ब्लॉक हैं।    AppComponent    कोनोर द्वारा बनाया गया डिफ़ॉल्ट घटक है। प्रत्येक घटक में शामिल हैं:  

  • एक टाइपस्क्रिप्ट वर्ग जो कि घटक तर्क
  • रखता है
  • एक HTML फ़ाइल और एक स्टाइलशीट जो घटक यूआई
  • परिभाषित करता है
  • @ कॉम्पोनेंट डेकोरेटर, जो घटक के मेटाडेटा को परिभाषित करने के लिए उपयोग किया जाता है।

हम अपने AppComponent अधिकांश भाग के लिए अछूते रहेंगे। इसके बजाय, हम दो नए बनाए गए घटकों का उपयोग करेंगे, AddList और दृश्यसूची , हमारे तर्क को बनाने के लिए हम अपने AppComponent के अंदर नीचे निचले चित्र में दिखाएंगे।

MEAN स्टैक: कोयोनर 2 + और एंगुलर सीएलआई वाला ऐप बनाएंMEAN स्टैक: कोनालर 2 + और एन्जोर क्लिलेटेड विषय वाला ऐप बनाएं:
ReactnpmAjaxTools और Semalt

हमारे पास अब घटकों की श्रेणीबद्धता है- शीर्ष पर 67 AppComponent , उसके बाद व्यू लिस्टकंपोनेंट और उसके बाद AddListComponent

     / * एप घटक। एचटीएमएल * /

{{Title}}!<एप-व्यू-सूची>

     / * दृश्य-सूची घटक। एचटीएमएल * /       

नाम की एक फ़ाइल बनाएँ सूची। मॉडल निर्देशिका के तहत ts यह वह जगह है जहां हम हमारे सूची के लिए मॉडल को स्टोर करेंगे।

   / * सूची ts * /निर्यात इंटरफ़ेस सूची {_id ?: स्ट्रिंग;शीर्षक: स्ट्रिंग;विवरण: स्ट्रिंग;श्रेणी: स्ट्रिंग;}    

देखें-सूची घटक

व्यू लिस्टकंपोनेंट 'घटक के तर्क में शामिल हैं:

  1. सूची संपत्ति जो कि सूची प्रकार की एक सरणी है यह सर्वर से मिली सूची की एक प्रति रखता है कोणीय की बाइंडिंग तकनीकों का उपयोग करते हुए, टेम्पलेट के अंदर घटक गुणधर्म सुलभ होते हैं।
  2. लोडसूची सर्वर से सभी सूचियों को लोड करता है यहाँ, हम इस से आह्वान करते हैं ListSev। getAllLists विधि और सदस्यता लें इसे करने के लिए। getAllLists एक सेवा पद्धति है (हमने इसे अभी तक परिभाषित नहीं किया है) जो कि वास्तविक http का प्रदर्शन करता है मिल अनुरोध और सूची देता है; लोड सूची तब घटक की सूची संपत्ति में इसे लोड करता है
  3. हटाएलिस्ट (सूची) हटाए जाने की प्रक्रिया का प्रबंधन करता है जब उपयोगकर्ता हटाएं बटन पर क्लिक करता है हम सूची सेवा की deleteList विधि के साथ आईडी तर्क के रूप में कॉल करेंगे। जब सर्वर का जवाब है कि विलोपन सफल है, तो हम लोड सूची को हमारे दृश्य को अपडेट करने के लिए कॉल करते हैं।
   / * दृश्य-सूची घटक। ts * /आयात करें {घटक, OnInit} 'angular / core' से;से आयात {ListService} ' । / सेवाओं / सूची। सर्विस';आयात करें {सूची} से ' । / मॉडल / सूची '@Component ({चयनकर्ता: 'ऐप-व्यू-सूची',templateUrl: '। /सूची देखें। घटक। html ',styleUrls: [' /सूची देखें। घटक। सीएसएस ']})निर्यात क्लास ViewListComponent लागू करता है OnInit {// सूची प्रॉपर्टी जो सूची प्रकार की एक सरणी हैनिजी सूची: सूची [] = [];निर्माता (निजी सूची: सेवा: सूची सेवा) {}ngOnInit    {// init पर सभी सूची लोड करेंइस। loadLists   ;}सार्वजनिक लोड सूची    {// सभी सूचियों को सर्वर से प्राप्त करें और सूची संपत्ति को अपडेट करेंइस। listserv। getAllLists   । सदस्यता के (प्रतिक्रिया => यह सूचियों = प्रतिक्रिया,)}// deleteList। हटाई गई सूची का उपयोग करके फ़िल्टर किया जा रहा है। फ़िल्टर विधिसार्वजनिक हटाएलिस्ट (सूची: सूची) {इस। listserv। deleteList (सूची। _id) सदस्यता के (प्रतिक्रिया => यह सूची = यह सूचियों। फिल्टर (सूचियों => सूची! == सूची),)}}    

टेम्पलेट ( दृश्य-सूची। घटक. श्रेणी}} {{सूची। शीर्षक}} {{सूची। वर्णन}} <बटन प्रकार = "बटन" (क्लिक करें) = "हटाएलिस्ट (सूची); $ इवेंट। stopPropagation ;"> हटाएं <

March 1, 2018