Met MongoDB Atlas zijn slechts een paar klikken in de browser nodig om uw eigen MongoDB-cluster in de cloud aan de gang te krijgen. Door het te gebruiken, kunt u Android- en iOS-apps bouwen die miljoenen gebruikers efficiënt kunnen bedienen. U hebt echter nog steeds een back-endserver nodig die als tussenpersoon kan fungeren tussen de apparaten van uw gebruikers en uw cluster. Je hebt het nodig om beveiligingsbeleid af te dwingen, een abstractieniveau toe te voegen aan je CRUD-activiteiten, taken te plannen en voor een heleboel andere dergelijke belangrijke taken.
- MongoDBCreëer een databasecluster in de cloud met MongoDB AtlasAshraff Hathibelagal
MongoDB Stitch is een krachtig serverloos platform dat aan al uw back-endvereisten kan voldoen. Naast het verstrekken van fijnmazige toegangscontrole tot de gegevens in uw MongoDB Atlas-cluster, biedt het een op JavaScript gebaseerde computeromgeving die u kunt gebruiken om een breed scala aan server-side bewerkingen uit te voeren. In deze tutorial laat ik je zien hoe je het platform in een Android-app gebruikt.
Vereisten
Om mee te doen, heb je nodig:
- een MongoDB Atlas-account
- de nieuwste versie van Android Studio
- een apparaat of emulator met Android 5.0 of hoger
1. Maak een MongoDB Atlas-cluster
MongoDB Stitch is bedoeld om te worden gebruikt met een MongoDB Atlas-cluster. Het staat je vrij om een cluster te gebruiken dat je al hebt, maar ik raad je aan een nieuwe te maken voor deze tutorial.
Begin door in te loggen op uw MongoDB Atlas-account en op Een nieuw cluster bouwen . te drukken knop.
In het volgende scherm, waarin u wordt gevraagd om configuratiegegevens over uw nieuwe cluster, kiest u een cloudprovider, een regio die een M0 free tier-cluster aanbiedt, en drukt u op Cluster maken knop.
Na een paar minuten heeft u een gloednieuw gratis tiercluster met de naam Cluster0 .
2. Een MongoDB Stitch-toepassing maken
Om een Stitch-toepassing aan uw cluster te koppelen, klikt u op de Toepassing koppelen koppeling. Druk op de pagina die vervolgens wordt geopend op Nieuwe toepassing maken knop.
U kunt nu de gewenste naam voor uw nieuwe Stitch-toepassing typen. Nadat u dit hebt gedaan, zorgt u ervoor dat het juiste cluster is geselecteerd en drukt u op Maken knop.
Op dit punt is uw Stitch-toepassing - met zeer royale gratis quota - klaar.
De applicatie heeft een unieke ID die je nodig hebt tijdens het ontwikkelen van je Android-app. Je kunt zien wat het is door naar de Clients . te gaan sectie en het openen van de Java (Android) tabblad.
3. Gebruikers en regels configureren
Door MongoDB Stitch te gebruiken, kunt u veilig web- en mobiele front-endcode schrijven voor interactie met uw MongoDB Atlas-cluster. Dit is mogelijk omdat u geen verbindingsreeks met het serveradres, de gebruikersnaam en het wachtwoord van uw database in uw code hoeft op te nemen.
Geauthenticeerde eindgebruikers van uw Stitch-toepassing krijgen automatisch toegang tot uw database. Met behulp van een of meer regels kunt u echter precies bepalen welke documenten en velden ze kunnen zien of wijzigen.
Om uw gebruikers te authenticeren, biedt Stitch verschillende authenticatiemechanismen, waaronder anonieme authenticatie, e-mail/wachtwoordauthenticatie en authenticatie met behulp van populaire federatieve identiteitsproviders. In deze zelfstudie gebruiken we anonieme authenticatie. Ga naar de Gebruikers . om het in te stellen sectie en open de Providers tabblad.
Selecteer vervolgens de optie Gebruikers toestaan anoniem in te loggen optie, schakel deze in en druk op de Opslaan knop.
Laten we zeggen dat we onze anonieme gebruikers willen toestaan om alleen te werken met de documenten die ze bezitten. Om een dergelijke regel te maken, gaat u naar de Regels sectie.
Omdat regels worden toegepast op collecties, drukt u op de knop Collectie toevoegen om nu een nieuwe collectie aan te maken. Geef het een naam in het formulier dat verschijnt en geef aan tot welke database het moet behoren. Selecteer daarna de Gebruikers kunnen alleen hun eigen gegevens lezen en schrijven sjabloon voor regels.
Bij het selecteren van de sjabloon wordt u gevraagd de naam op te geven van het veld in uw document waarin u de automatisch gegenereerde Stitch auth-ID van de gebruiker opslaat. Stitch zal dit veld gebruiken om te beslissen of een document van een gebruiker is of niet. Zeg de naam is user_id en verzend het formulier.
Op de pagina die hierna wordt geopend, kunt u nu bevestigen dat alleen de eigenaren van de documenten in uw verzameling er lees- en schrijfbewerkingen op kunnen uitvoeren.
4. Android-project voorbereiden
Om Stitch in je Android Studio-project te kunnen gebruiken, moet je de officiële SDK toevoegen als een implementation
afhankelijkheid in uw app
build.gradle . van de module bestand.
implementation 'org.mongodb:stitch-android-sdk:4.0.5'
Bovendien moet u de unieke ID van uw Stitch-app in uw project vermelden. Ga dus naar de res/values/strings.xml bestand en voeg het toe als een <string>
tag.
<string name="my_app_id">mystitchapp-qwern</string>
5. Breng een verbinding tot stand
Met een instantie van de StitchAppClient
class kunt u eenvoudig gebruik maken van alle functies die het Stitch-platform biedt. Initialiseren initialiseren StitchAppClient
, moet u de initializeDefaultAppClient()
. aanroepen methode en geef de ID van uw Stitch-app eraan door. Dit hoeft maar één keer te gebeuren in uw app, bij voorkeur zodra deze start.
Als het klaar is, kun je de getDefaultAppClient()
. aanroepen methode om een verwijzing naar de klant te krijgen. De volgende code, die u kunt toevoegen aan de onCreate()
. van uw activiteit methode, laat zien hoe:
Stitch.initializeDefaultAppClient( resources.getString(R.string.my_app_id) ) val stitchAppClient = Stitch.getDefaultAppClient()
Tenzij uw gebruiker is aangemeld bij uw Stitch-app, kunt u geen nuttige bewerkingen uitvoeren op uw MongoDB Atlas-cluster. Daarom moet u de gebruiker nu aanmelden door de loginWithCredential()
. aan te roepen methode, die asynchroon wordt uitgevoerd en een Task
. retourneert voorwerp. Omdat u anonieme authenticatie hebt gekozen als authenticatiemechanisme in de webconsole van Stitch, moet u er bovendien voor zorgen dat u een instantie van de AnonymousCredential
doorgeeft class naar de methode.
stitchAppClient.auth.loginWithCredential(AnonymousCredential()) .addOnSuccessListener { // More code here }
Op dit moment, als u de app uitvoert, zal Stitch u automatisch registreren als een nieuwe gebruiker en u ook aanmelden bij de app. Wat meer is, als u teruggaat naar de Stitch-webconsole en de Gebruikers . opent sectie, kunt u zien dat er een nieuw item is toegevoegd aan de lijst met gebruikers.
6. Documenten invoegen
Na een succesvolle verificatie kunt u doorgaan en een instantie van de RemoteMongoClient
krijgen class om te beginnen met interactie met uw MongoDB Atlas-cluster. Om dit te doen, kunt u de getServiceClient()
. aanroepen methode en specificeer dat de naam van de gewenste service "mongodb-atlas
. is ". Dit is hoe:
val mongoClient = stitchAppClient.getServiceClient( RemoteMongoClient.factory, "mongodb-atlas" )
Onthoud dat dankzij de regel die u eerder in deze zelfstudie hebt gemaakt, uw gebruiker alleen lees- en schrijfbewerkingen kan uitvoeren op zijn of haar eigen gegevens. Bovendien is uw gebruiker beperkt tot het werken met alleen de database en verzameling die u in de Stitch-webconsole hebt genoemd.
Om een verwijzing naar de database te krijgen, roept u de getDatabase()
methode en geef de naam eraan door. Evenzo, om een verwijzing naar de collectie te krijgen, roept u de getCollection()
. aan methode, die een RemoteMongoCollection
. retourneert voorwerp.
val myCollection = mongoClient.getDatabase("test") .getCollection("my_collection")
Wat je aan de collectie toevoegt, is natuurlijk aan jou. Laten we voor een voorbeeld stellen dat we documenten willen toevoegen met tijdstempels van alle tijden waarop de gebruiker de app heeft geopend.
Om een nieuw BSON-document aan te maken, moet u de constructor van het Document
. gebruiken klas. Omdat Document
objecten lijken erg op kaarten, u kunt de []
. gebruiken operator om er sleutel-waardeparen aan toe te voegen.
De volgende code laat zien hoe u een nieuw document maakt en er een tijdstempel aan toevoegt:
val myFirstDocument = Document() myFirstDocument["time"] = Date().time
Naast uw gegevens moeten al uw documenten de Stitch auth-ID van de gebruiker bevatten. Zonder dit zullen uw invoegbewerkingen mislukken. Om de auth-ID te krijgen, kunt u rechtstreeks de id
. gebruiken eigenschap van de impliciete it
object beschikbaar in de luisteraar met succes.
myFirstDocument["user_id"] = it.id
U kunt het document nu invoegen door de insertOne()
. aan te roepen methode. (Je kunt lezen over de insertOne()
methode en andere schrijfbewerkingen in de MongoDB-documentatie voor het Java-stuurprogramma.) Omdat het asynchroon draait, hebt u een andere luisteraar nodig om te controleren of de invoegbewerking is geslaagd.
myCollection.insertOne(myFirstDocument) .addOnSuccessListener { Log.d("STITCH", "One document inserted") }
Als u de app nu uitvoert en Logcat . van Android Studio controleert paneel, zou u een logboekvermelding moeten kunnen zien die er als volgt uitziet:
7. Query's uitvoeren
Door de find()
. aan te roepen methode van uw RemoteMongoCollection
object kunt u een query maken. (Je kunt meer leren over find()
en andere querybewerkingen in de MongoDB Java-stuurprogrammadocumentatie.) De methode retourneert een RemoteFindIterable
object, waarop u meer methoden kunt aanroepen, zoals sort()
en limit()
om de resultaten van de query te beheren. De volgende code creëert bijvoorbeeld een zoekopdracht om de laatste vijf documenten te vinden die door de gebruiker zijn gemaakt:
val query = myCollection.find() .sort( Document("time", -1) ) .limit(5)
Om de query daadwerkelijk uit te voeren, kunt u zijn into()
. aanroepen methode, die een lijst als argument verwacht. Zoals de naam al doet vermoeden, laadt het de resultaten van de zoekopdracht, die niets anders zijn dan Document
objecten, in de lijst die u eraan doorgeeft. Het werkt asynchroon, dus u kunt de lijst alleen gaan gebruiken binnen een luisteraar die succes heeft.
val result = mutableListOf<Document>() query.into(result).addOnSuccessListener { // More code here }
Laten we voor nu, om het simpel te houden, een TextView
. gebruiken widget om de resultaten van de zoekopdracht weer te geven. Voeg dus de volgende code toe aan het lay-out-XML-bestand van uw activiteit:
<TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/viewer" />
Terug in de luisteraar die succes heeft, kun je nu door de lijst lopen en een aaneengeschakelde reeks maken die alle tijdstempels bevat. Optioneel kunt u de tijdstempels doorgeven aan de getRelativeDateTimeString()
methode van de DateUtils
klasse om ze leesbaarder te maken. Zodra de tekenreeks gereed is, kunt u deze direct toewijzen aan de TextView
widget. Dit is hoe:
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
Als je de app opnieuw uitvoert, zou je nu zoiets als dit op je apparaat moeten zien: