MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Come utilizzare MongoDB Stitch nelle app Android

Con MongoDB Atlas, bastano pochi clic nel browser per far funzionare il tuo cluster MongoDB nel cloud. Usandolo, puoi creare app Android e iOS che possono servire milioni di utenti in modo efficiente. Tuttavia, avresti comunque bisogno di un server back-end che possa fungere da intermediario tra i dispositivi dei tuoi utenti e il tuo cluster. Ne avresti bisogno per applicare le politiche di sicurezza, aggiungere un livello di astrazione alle tue operazioni CRUD, pianificare i lavori e per molte altre attività così importanti.

  • MongoDBCrea un cluster di database nel cloud con MongoDB AtlasAshraff Hathibelagal

MongoDB Stitch è una potente piattaforma serverless in grado di soddisfare tutti i tuoi requisiti di back-end. Oltre a fornire un controllo dell'accesso dettagliato ai dati nel cluster MongoDB Atlas, offre un ambiente di elaborazione basato su JavaScript che puoi utilizzare per eseguire un'ampia varietà di operazioni lato server. In questo tutorial, ti mostrerò come utilizzare la piattaforma in un'app Android.

Prerequisiti

Per seguire, avrai bisogno di:

  • un account Atlas MongoDB
  • l'ultima versione di Android Studio
  • un dispositivo o un emulatore con Android 5.0 o versioni successive

1. Crea un cluster Atlas MongoDB

MongoDB Stitch è pensato per essere utilizzato con un cluster MongoDB Atlas. Sei libero di utilizzare un cluster che già possiedi, ma ti suggerisco di crearne uno nuovo per questo tutorial.

Inizia accedendo al tuo account MongoDB Atlas e premendo il pulsante Crea un nuovo cluster pulsante.

Nella schermata successiva, che ti chiede i dettagli di configurazione del tuo nuovo cluster, scegli un qualsiasi provider cloud, una regione che offre un cluster di livello gratuito M0 e premi il pulsante Crea cluster pulsante.

Dopo pochi minuti, avrai un nuovissimo cluster di livello gratuito denominato Cluster0 .

2. Crea un'applicazione Stitch MongoDB

Per associare un'applicazione Stitch al tuo cluster, fai clic su Applicazione di collegamento collegamento. Nella pagina successiva che si apre, premi su Crea nuova applicazione pulsante.

Ora puoi digitare il nome che desideri per la tua nuova applicazione Stitch. Dopo averlo fatto, assicurati che sia selezionato il cluster corretto e premi il pulsante Crea pulsante.

A questo punto, la tua applicazione Stitch, con quote gratuite molto generose, è pronta.

L'applicazione ha un ID univoco di cui avrai bisogno durante lo sviluppo della tua app Android. Puoi vedere di cosa si tratta andando su Clienti sezione e aprendo Java (Android) scheda.

3. Configura utenti e regole

Utilizzando MongoDB Stitch, puoi scrivere in sicurezza codice front-end web e mobile per interagire con il tuo cluster MongoDB Atlas. Ciò è possibile perché non dovrai includere nel codice una stringa di connessione contenente l'indirizzo del server, il nome utente e la password del tuo database.

Gli utenti finali autenticati della tua applicazione Stitch ottengono automaticamente l'accesso al tuo database. Utilizzando una o più regole, invece, puoi controllare con precisione quali documenti e campi possono vedere o modificare.

Per autenticare i tuoi utenti, Stitch offre diversi meccanismi di autenticazione, inclusa l'autenticazione anonima, l'autenticazione tramite e-mail/password e l'autenticazione tramite i più diffusi provider di identità federati. In questo tutorial utilizzeremo l'autenticazione anonima. Per configurarlo, vai su Utenti sezione e apri i Fornitori scheda.

Quindi, seleziona Consenti agli utenti di accedere in modo anonimo opzione, abilitala e premi Salva pulsante.

Diciamo che vogliamo consentire ai nostri utenti anonimi di lavorare solo con i documenti di loro proprietà. Per creare una tale regola, vai alle Regole sezione.

Poiché le regole vengono applicate alle raccolte, premi Aggiungi raccolta pulsante per creare una nuova collezione ora. Nel modulo che appare, assegnagli un nome e specifica a quale database deve appartenere. Dopo averlo fatto, seleziona Gli utenti possono solo leggere e scrivere i propri dati modello di regole.

Dopo aver selezionato il modello, ti verrà chiesto di specificare il nome del campo nel documento in cui memorizzerai l'ID di autenticazione Stitch generato automaticamente dall'utente. Stitch utilizzerà questo campo per decidere se un documento appartiene a un utente o meno. Supponi che il nome sia id_utente e invia il modulo.

Nella pagina che si apre di seguito, ora puoi confermare che solo i proprietari dei documenti della tua collezione possono eseguire operazioni di lettura e scrittura su di essi.

4. Prepara il progetto Android

Per poter utilizzare Stitch nel tuo progetto Android Studio, devi aggiungere il suo SDK ufficiale come implementation dipendenza nella tua app build.gradle del modulo file.

implementation 'org.mongodb:stitch-android-sdk:4.0.5'

Inoltre, devi menzionare l'ID univoco della tua app Stitch nel tuo progetto. Quindi vai a res/values/strings.xml file e aggiungilo come <string> tag.

<string name="my_app_id">mystitchapp-qwern</string>

5. Stabilisci una connessione

Con un'istanza di StitchAppClient classe, puoi facilmente utilizzare tutte le funzionalità offerte dalla piattaforma Stitch. Per inizializzare inizializzare StitchAppClient , devi chiamare initializeDefaultAppClient() metodo e passaci l'ID della tua app Stitch. Questo deve essere fatto solo una volta nella tua app, preferibilmente non appena si avvia.

Una volta pronto, puoi chiamare getDefaultAppClient() metodo per ottenere un riferimento al cliente. Il codice seguente, che puoi aggiungere al onCreate() della tua attività metodo, ti mostra come:

Stitch.initializeDefaultAppClient(
    resources.getString(R.string.my_app_id)
)

val stitchAppClient = Stitch.getDefaultAppClient()

A meno che il tuo utente non abbia effettuato l'accesso alla tua app Stitch, non sarai in grado di eseguire operazioni utili sul tuo cluster MongoDB Atlas. Pertanto, ora devi accedere all'utente chiamando loginWithCredential() metodo, che viene eseguito in modo asincrono e restituisce un Task oggetto. Inoltre, poiché hai scelto l'autenticazione anonima come meccanismo di autenticazione nella console web di Stitch, assicurati di passare un'istanza di AnonymousCredential classe al metodo.

stitchAppClient.auth.loginWithCredential(AnonymousCredential())
        .addOnSuccessListener { 
            // More code here
        }

A questo punto, se esegui l'app, Stitch ti registrerà automaticamente come nuovo utente e ti collegherà anche all'app. Inoltre, se torni alla console web di Stitch e apri gli Utenti sezione, potrai vedere che una nuova voce è stata aggiunta all'elenco degli utenti.

6. Inserisci documenti

Dopo un'autenticazione riuscita, puoi procedere e ottenere un'istanza di RemoteMongoClient classe per iniziare a interagire con il tuo cluster MongoDB Atlas. Per farlo, puoi chiamare getServiceClient() metodo e specificare che il nome del servizio desiderato è "mongodb-atlas ". Ecco come:

val mongoClient = stitchAppClient.getServiceClient(
                    RemoteMongoClient.factory,
                    "mongodb-atlas"
                  )

Ricorda che, grazie alla regola che hai creato in precedenza in questo tutorial, il tuo utente può eseguire solo operazioni di lettura e scrittura sui propri dati. Inoltre, il tuo utente è limitato a lavorare solo con il database e la raccolta che hai menzionato nella console web di Stitch.

Per ottenere un riferimento al database, chiama getDatabase() metodo e passargli il nome. Allo stesso modo, per ottenere un riferimento alla raccolta, chiama getCollection() metodo, che restituisce un RemoteMongoCollection oggetto.

val myCollection = mongoClient.getDatabase("test")
                              .getCollection("my_collection")

Quello che aggiungi alla collezione dipende, ovviamente, da te. A titolo di esempio, supponiamo di voler aggiungere documenti contenenti timestamp di tutte le volte in cui l'utente ha aperto l'app.

Per creare un nuovo documento BSON, devi utilizzare il costruttore del Document classe. Perché Document gli oggetti sono molto simili alle mappe, puoi usare il [] operatore per aggiungere loro coppie chiave-valore.

Il codice seguente mostra come creare un nuovo documento e aggiungervi un timestamp:

val myFirstDocument = Document()
myFirstDocument["time"] = Date().time

Oltre ai tuoi dati, tutti i tuoi documenti devono contenere l'ID di autenticazione Stitch dell'utente. Senza di esso, le tue operazioni di inserimento falliranno. Per ottenere l'ID di autenticazione, puoi utilizzare direttamente il id proprietà dell'implicito it oggetto disponibile all'interno del listener di successo.

myFirstDocument["user_id"] = it.id

Ora puoi inserire il documento chiamando insertOne() metodo. (Puoi leggere informazioni su insertOne() metodo e altre operazioni di scrittura nella documentazione MongoDB per il driver Java.) Poiché viene eseguito in modo asincrono, avrai bisogno di un altro listener di successo per verificare se l'operazione di inserimento è riuscita.

myCollection.insertOne(myFirstDocument)
            .addOnSuccessListener {
                Log.d("STITCH", "One document inserted")
            }

Se esegui l'app ora e controlli il Logcat di Android Studio pannello, dovresti essere in grado di vedere una voce di registro simile a questa:

7. Esegui query

Chiamando find() metodo della tua RemoteMongoCollection oggetto, è possibile creare una query. (Puoi saperne di più su find() e altre operazioni di query nella documentazione del driver Java MongoDB.) Il metodo restituisce un RemoteFindIterable oggetto, su cui puoi chiamare più metodi come sort() e limit() per gestire i risultati della query. Ad esempio, il codice seguente crea una query per trovare gli ultimi cinque documenti creati dall'utente:

val query = myCollection.find()
                        .sort( Document("time", -1) )
                        .limit(5)

Per eseguire effettivamente la query, puoi chiamarne into() metodo, che prevede un elenco come argomento. Come suggerisce il nome, carica i risultati della query, che non sono altro che Document oggetti, nella lista che gli passi. Funziona in modo asincrono, quindi puoi iniziare a utilizzare l'elenco solo all'interno di un listener di successo.

val result = mutableListOf<Document>()

query.into(result).addOnSuccessListener {
    // More code here    
}

Per ora, per semplificare le cose, utilizziamo una TextView widget per visualizzare i risultati della query. Quindi aggiungi il seguente codice al file XML del layout della tua attività:

<TextView
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:id="@+id/viewer"
    />

Di nuovo all'interno del listener di successo, ora puoi scorrere l'elenco e creare una stringa concatenata contenente tutti i timestamp. Facoltativamente, puoi passare i timestamp a getRelativeDateTimeString() metodo di DateUtils classe per renderli più leggibili. Una volta che la stringa è pronta, puoi assegnarla direttamente a TextView aggeggio. Ecco come:

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

Se esegui di nuovo l'app, ora dovresti vedere qualcosa di simile sul tuo dispositivo: