MongoDB एटलस के साथ, अपने स्वयं के MongoDB क्लस्टर को क्लाउड में चलाने और चलाने के लिए ब्राउज़र में बस कुछ ही क्लिक होते हैं। इसका उपयोग करके, आप Android और iOS ऐप बना सकते हैं जो लाखों उपयोगकर्ताओं को कुशलता से सेवा दे सकते हैं। हालांकि, आपको अभी भी एक बैक-एंड सर्वर की आवश्यकता होगी जो आपके उपयोगकर्ताओं के उपकरणों और आपके क्लस्टर के बीच मध्यस्थ के रूप में कार्य कर सके। आपको सुरक्षा नीतियों को लागू करने, अपने सीआरयूडी संचालन, शेड्यूल नौकरियों, और ऐसे कई अन्य महत्वपूर्ण कार्यों के लिए अमूर्तता का स्तर जोड़ने की आवश्यकता होगी।
- MongoDB MongoDB AtlasAshraff Hathibelagal के साथ क्लाउड में एक डेटाबेस क्लस्टर बनाएं
MongoDB Stitch एक शक्तिशाली सर्वर रहित प्लेटफ़ॉर्म है जो आपकी सभी बैक-एंड आवश्यकताओं को पूरा कर सकता है। आपके MongoDB एटलस क्लस्टर में डेटा को बढ़िया एक्सेस कंट्रोल प्रदान करने के अलावा, यह एक जावास्क्रिप्ट-आधारित कंप्यूट वातावरण प्रदान करता है जिसका उपयोग आप विभिन्न प्रकार के सर्वर-साइड ऑपरेशन करने के लिए कर सकते हैं। इस ट्यूटोरियल में, मैं आपको यह दिखाने जा रहा हूँ कि एंड्रॉइड ऐप में प्लेटफॉर्म का उपयोग कैसे किया जाता है।
आवश्यकताएं
साथ चलने के लिए, आपको निम्न की आवश्यकता होगी:
- एक MongoDB एटलस खाता
- Android Studio का नवीनतम संस्करण
- Android 5.0 या उसके बाद वाले वर्शन पर चलने वाला डिवाइस या एमुलेटर
MongoDB स्टिच का उपयोग MongoDB एटलस क्लस्टर के साथ किया जाना है। आपके पास पहले से मौजूद क्लस्टर का उपयोग करने के लिए आप स्वतंत्र हैं, लेकिन मेरा सुझाव है कि आप इस ट्यूटोरियल के लिए एक नया क्लस्टर बनाएं।
अपने MongoDB एटलस खाते में लॉग इन करके और एक नया क्लस्टर बनाएं . दबाकर प्रारंभ करें बटन।
अगली स्क्रीन में, जो आपसे आपके नए क्लस्टर के बारे में कॉन्फ़िगरेशन विवरण मांगती है, कोई भी क्लाउड प्रदाता चुनें, एक ऐसा क्षेत्र जो M0 फ्री टियर क्लस्टर प्रदान करता है, और क्लस्टर बनाएं दबाएं। बटन।
कुछ मिनटों के बाद, आपके पास Cluster0 . नाम का एक बिल्कुल नया मुफ़्त टियर क्लस्टर होगा ।
2. MongoDB स्टिच एप्लिकेशन बनाएं
स्टिच एप्लिकेशन को अपने क्लस्टर के साथ जोड़ने के लिए, लिंक एप्लिकेशन . पर क्लिक करें जोड़ना। आगे खुलने वाले पेज में, नया एप्लिकेशन बनाएं दबाएं बटन।
अब आप अपने नए स्टिच एप्लिकेशन के लिए मनचाहा नाम टाइप कर सकते हैं। ऐसा करने के बाद, सुनिश्चित करें कि सही क्लस्टर चुना गया है और बनाएं . दबाएं बटन।
इस बिंदु पर, आपका स्टिच एप्लिकेशन—बहुत उदार मुफ्त कोटा के साथ—तैयार है।
एप्लिकेशन में एक अद्वितीय आईडी है जिसकी आपको अपना Android ऐप विकसित करते समय आवश्यकता होगी। ग्राहकों . पर जाकर आप देख सकते हैं कि यह क्या है अनुभाग और खोलना Java (Android) टैब।
3. उपयोगकर्ता और नियम कॉन्फ़िगर करें
MongoDB Stitch का उपयोग करके, आप अपने MongoDB एटलस क्लस्टर के साथ इंटरैक्ट करने के लिए सुरक्षित रूप से वेब और मोबाइल फ्रंट-एंड कोड लिख सकते हैं। यह संभव है क्योंकि आपको अपने कोड में अपने डेटाबेस के सर्वर पते, उपयोगकर्ता नाम और पासवर्ड वाली एक कनेक्शन स्ट्रिंग शामिल करने की आवश्यकता नहीं होगी।
आपके स्टिच एप्लिकेशन के प्रमाणित अंतिम उपयोगकर्ता स्वचालित रूप से आपके डेटाबेस तक पहुंच प्राप्त करते हैं। हालांकि, एक या अधिक नियमों का उपयोग करके, आप सटीक रूप से नियंत्रित कर सकते हैं कि वे कौन से दस्तावेज़ और फ़ील्ड देख सकते हैं या संशोधित कर सकते हैं।
अपने उपयोगकर्ताओं को प्रमाणित करने के लिए, स्टिच कई प्रमाणीकरण तंत्र प्रदान करता है, जिसमें अनाम प्रमाणीकरण, ईमेल / पासवर्ड प्रमाणीकरण और लोकप्रिय फ़ेडरेटेड पहचान प्रदाताओं का उपयोग करके प्रमाणीकरण शामिल है। इस ट्यूटोरियल में, हम अनाम प्रमाणीकरण का उपयोग करेंगे। इसे सेट करने के लिए, उपयोगकर्ताओं . पर जाएं अनुभाग खोलें और प्रदाता खोलें टैब।
इसके बाद, उपयोगकर्ताओं को गुमनाम रूप से लॉग इन करने दें . चुनें विकल्प, इसे सक्षम करें, और सहेजें . दबाएं बटन।
मान लें कि हम अपने अनाम उपयोगकर्ताओं को केवल उनके स्वामित्व वाले दस्तावेज़ों के साथ काम करने की अनुमति देना चाहते हैं। ऐसा नियम बनाने के लिए, नियम . पर जाएं अनुभाग।
क्योंकि नियम संग्रह पर लागू होते हैं, संग्रह जोड़ें दबाएं अब एक नया संग्रह बनाने के लिए बटन। दिखाई देने वाले फॉर्म में, इसे एक नाम दें और निर्दिष्ट करें कि यह किस डेटाबेस से संबंधित होना चाहिए। ऐसा करने के बाद, उपयोगकर्ता केवल अपना डेटा पढ़ और लिख सकते हैं का चयन करें नियम टेम्पलेट।
टेम्प्लेट का चयन करने पर, आपको अपने दस्तावेज़ में उस फ़ील्ड का नाम निर्दिष्ट करने के लिए कहा जाएगा जिसमें आप उपयोगकर्ता की ऑटो-जेनरेटेड स्टिच ऑथ आईडी को संग्रहीत करेंगे। कोई दस्तावेज़ उपयोगकर्ता का है या नहीं, यह तय करते समय स्टिच इस फ़ील्ड का उपयोग करेगा। मान लें कि नाम user_id है और फॉर्म जमा करें।
आगे खुलने वाले पृष्ठ में, अब आप पुष्टि कर सकते हैं कि केवल आपके संग्रह के दस्तावेज़ों के स्वामी ही उन पर पढ़ने और लिखने का कार्य कर सकते हैं।
4. Android प्रोजेक्ट तैयार करें
अपने Android Studio प्रोजेक्ट में Stitch का उपयोग करने में सक्षम होने के लिए, आपको इसका आधिकारिक SDK implementation
के रूप में जोड़ना होगा आपके app
. में निर्भरता मॉड्यूल का build.gradle फ़ाइल।
implementation 'org.mongodb:stitch-android-sdk:4.0.5'
इसके अतिरिक्त, आपको अपने प्रोजेक्ट में अपने स्टिच ऐप की विशिष्ट आईडी का उल्लेख करना होगा। तो res/values/strings.xml . पर जाएं फ़ाइल करें और इसे <string>
. के रूप में जोड़ें टैग।
<string name="my_app_id">mystitchapp-qwern</string>
5. एक कनेक्शन स्थापित करें
StitchAppClient
. के उदाहरण के साथ वर्ग, आप आसानी से स्टिच प्लेटफॉर्म द्वारा प्रदान की जाने वाली सभी सुविधाओं का उपयोग कर सकते हैं। इनिशियलाइज़ करने के लिए StitchAppClient
, आपको initializeDefaultAppClient()
. को कॉल करना होगा विधि और इसे अपने सिलाई ऐप की आईडी पास करें। यह आपके ऐप में केवल एक बार किया जाना चाहिए, अधिमानतः जैसे ही यह शुरू होता है।
इसके तैयार होने के बाद, आप getDefaultAppClient()
. पर कॉल कर सकते हैं क्लाइंट का संदर्भ प्राप्त करने की विधि। निम्न कोड, जिसे आप अपनी गतिविधि के onCreate()
में जोड़ सकते हैं विधि, आपको दिखाती है कि कैसे:
Stitch.initializeDefaultAppClient( resources.getString(R.string.my_app_id) ) val stitchAppClient = Stitch.getDefaultAppClient()
जब तक आपका उपयोगकर्ता आपके स्टिच ऐप में लॉग इन नहीं होता, तब तक आप अपने MongoDB एटलस क्लस्टर पर कोई उपयोगी संचालन नहीं कर पाएंगे। इसलिए, अब आपको loginWithCredential()
. पर कॉल करके उपयोगकर्ता को लॉग इन करना होगा विधि, जो एसिंक्रोनस रूप से चलती है और एक Task
लौटाती है वस्तु। इसके अतिरिक्त, चूंकि आपने सिलाई के वेब कंसोल में प्रमाणीकरण तंत्र के रूप में अनाम प्रमाणीकरण को चुना है, इसलिए सुनिश्चित करें कि आपने AnonymousCredential
का एक उदाहरण पास किया है विधि के लिए कक्षा।
stitchAppClient.auth.loginWithCredential(AnonymousCredential()) .addOnSuccessListener { // More code here }
इस बिंदु पर, यदि आप ऐप चलाते हैं, तो स्टिच स्वचालित रूप से आपको एक नए उपयोगकर्ता के रूप में पंजीकृत करेगा, और आपको ऐप में लॉग इन भी करेगा। क्या अधिक है, यदि आप सिलाई वेब कंसोल पर वापस जाते हैं और उपयोगकर्ता . खोलते हैं अनुभाग में, आप देख पाएंगे कि उपयोगकर्ताओं की सूची में एक नई प्रविष्टि जोड़ दी गई है।
6. दस्तावेज़ सम्मिलित करें
सफल प्रमाणीकरण के बाद, आप आगे बढ़ सकते हैं और RemoteMongoClient
का उदाहरण प्राप्त कर सकते हैं अपने MongoDB एटलस क्लस्टर के साथ बातचीत शुरू करने के लिए कक्षा। ऐसा करने के लिए, आप getServiceClient()
. पर कॉल कर सकते हैं विधि और निर्दिष्ट करें कि आप जो सेवा चाहते हैं उसका नाम "mongodb-atlas
. है ". यहां बताया गया है:
val mongoClient = stitchAppClient.getServiceClient( RemoteMongoClient.factory, "mongodb-atlas" )
याद रखें कि, इस ट्यूटोरियल में आपके द्वारा पहले बनाए गए नियम के लिए धन्यवाद, आपका उपयोगकर्ता केवल अपने डेटा पर पढ़ने और लिखने का कार्य कर सकता है। इसके अलावा, आपका उपयोगकर्ता केवल उस डेटाबेस और संग्रह के साथ काम करने तक सीमित है जिसका आपने स्टिच वेब कंसोल में उल्लेख किया है।
डेटाबेस का संदर्भ प्राप्त करने के लिए, getDatabase()
. पर कॉल करें विधि और इसका नाम पास करें। इसी तरह, संग्रह का संदर्भ प्राप्त करने के लिए, getCollection()
. पर कॉल करें विधि, जो एक RemoteMongoCollection
लौटाती है वस्तु।
val myCollection = mongoClient.getDatabase("test") .getCollection("my_collection")
आप संग्रह में क्या जोड़ते हैं, निश्चित रूप से, आप पर निर्भर है। उदाहरण के लिए, मान लें कि हम उस समय के टाइमस्टैम्प वाले दस्तावेज़ जोड़ना चाहते हैं, जिस समय उपयोगकर्ता ने ऐप खोला था।
एक नया BSON दस्तावेज़ बनाने के लिए, आपको Document
. के निर्माता का उपयोग करना चाहिए कक्षा। क्योंकि Document
ऑब्जेक्ट नक्शे से बहुत मिलते-जुलते हैं, आप []
. का उपयोग कर सकते हैं उनमें की-वैल्यू पेयर जोड़ने के लिए ऑपरेटर।
निम्न कोड आपको एक नया दस्तावेज़ बनाने और उसमें टाइमस्टैम्प जोड़ने का तरीका दिखाता है:
val myFirstDocument = Document() myFirstDocument["time"] = Date().time
आपके डेटा के अलावा, आपके सभी दस्तावेज़ों में उपयोगकर्ता की स्टिच प्रमाणीकरण आईडी होनी चाहिए। इसके बिना, आपके सम्मिलित कार्य विफल हो जाएंगे। प्रमाणीकरण आईडी प्राप्त करने के लिए, आप सीधे id
. का उपयोग कर सकते हैं निहित it
. की संपत्ति ऑब्जेक्ट ऑन-सक्सेस श्रोता के अंदर उपलब्ध है।
myFirstDocument["user_id"] = it.id
अब आप insertOne()
. पर कॉल करके दस्तावेज़ सम्मिलित कर सकते हैं तरीका। (आप insertOne()
. के बारे में पढ़ सकते हैं जावा ड्राइवर के लिए MongoDB दस्तावेज़ में विधि और अन्य लेखन संचालन।) क्योंकि यह एसिंक्रोनस रूप से चलता है, आपको यह जांचने के लिए एक और ऑन-सक्सेस श्रोता की आवश्यकता होगी कि क्या इंसर्ट ऑपरेशन सफल हुआ।
myCollection.insertOne(myFirstDocument) .addOnSuccessListener { Log.d("STITCH", "One document inserted") }
यदि आप अभी ऐप चलाते हैं और Android Studio के Logcat . की जांच करते हैं पैनल, आपको एक लॉग प्रविष्टि देखने में सक्षम होना चाहिए जो इस तरह दिखती है:
7. क्वेरी चलाएँ
find()
. पर कॉल करके आपके RemoteMongoCollection
. की विधि ऑब्जेक्ट, आप एक क्वेरी बना सकते हैं। (आप find()
के बारे में अधिक जान सकते हैं और MongoDB जावा ड्राइवर दस्तावेज़ में अन्य क्वेरी संचालन।) विधि एक RemoteFindIterable
लौटाती है ऑब्जेक्ट, जिस पर आप अधिक विधियों को कॉल कर सकते हैं जैसे sort()
और limit()
क्वेरी के परिणामों को प्रबंधित करने के लिए। उदाहरण के लिए, निम्न कोड उपयोगकर्ता द्वारा बनाए गए अंतिम पांच दस्तावेज़ों को खोजने के लिए एक क्वेरी बनाता है:
val query = myCollection.find() .sort( Document("time", -1) ) .limit(5)
वास्तव में क्वेरी चलाने के लिए, आप इसके into()
. को कॉल कर सकते हैं विधि, जो एक तर्क के रूप में एक सूची की अपेक्षा करती है। जैसा कि इसके नाम से पता चलता है, यह क्वेरी के परिणामों को लोड करता है, जो कुछ और नहीं बल्कि Document
. हैं ऑब्जेक्ट्स, उस सूची में जिसे आप पास करते हैं। यह अतुल्यकालिक रूप से चलता है, इसलिए आप सूची का उपयोग केवल एक सफल श्रोता के अंदर ही शुरू कर सकते हैं।
val result = mutableListOf<Document>() query.into(result).addOnSuccessListener { // More code here }
अभी के लिए, चीजों को सरल रखने के लिए, आइए एक TextView
का उपयोग करें क्वेरी के परिणाम प्रदर्शित करने के लिए विजेट। इसलिए अपनी गतिविधि के लेआउट XML फ़ाइल में निम्न कोड जोड़ें:
<TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/viewer" />
ऑन-सक्सेस श्रोता के अंदर, अब आप सूची के माध्यम से लूप कर सकते हैं और सभी टाइमस्टैम्प युक्त एक संयोजित स्ट्रिंग बना सकते हैं। वैकल्पिक रूप से, आप टाइमस्टैम्प को getRelativeDateTimeString()
पर पास कर सकते हैं DateUtils
. की विधि उन्हें और अधिक पठनीय बनाने के लिए कक्षा। एक बार स्ट्रिंग तैयार हो जाने के बाद, आप इसे सीधे TextView
. पर असाइन कर सकते हैं विजेट। यहां बताया गया है:
val output = StringBuilder("You opened this app: \n\n") // Loop through the results result.forEach { output.append( DateUtils.getRelativeDateTimeString( this@MainActivity, it["time"] as Long, // Get value of 'time' field DateUtils.SECOND_IN_MILLIS, DateUtils.WEEK_IN_MILLIS, 0 ) ).append("\n") } // Update the TextView viewer.text = output
यदि आप ऐप को फिर से चलाते हैं, तो अब आपको अपने डिवाइस पर कुछ ऐसा दिखाई देना चाहिए: