sql >> Databáze >  >> NoSQL >> MongoDB

Jak používat MongoDB Stitch v aplikacích pro Android

S MongoDB Atlas stačí pár kliknutí v prohlížeči, abyste zprovoznili svůj vlastní MongoDB cluster v cloudu. S jeho pomocí můžete vytvářet aplikace pro Android a iOS, které mohou efektivně sloužit milionům uživatelů. Stále však potřebujete back-end server, který může fungovat jako prostředník mezi zařízeními vašich uživatelů a vaším clusterem. Potřebovali byste jej k vynucení bezpečnostních zásad, přidání úrovně abstrakce do vašich operací CRUD, plánování úloh a pro mnoho dalších takových důležitých úkolů.

  • MongoDBCvytvořte databázový klastr v cloudu pomocí MongoDB AtlasAshraff Hathibelagal

MongoDB Stitch je výkonná platforma bez serveru, která dokáže splnit všechny vaše back-endové požadavky. Kromě toho, že poskytuje jemné řízení přístupu k datům ve vašem clusteru MongoDB Atlas, nabízí výpočetní prostředí založené na JavaScriptu, které můžete použít k provádění široké škály operací na straně serveru. V tomto tutoriálu vám ukážu, jak používat platformu v aplikaci pro Android.

Předpoklady

Chcete-li pokračovat, budete potřebovat:

  • účet MongoDB Atlas
  • nejnovější verzi aplikace Android Studio
  • zařízení nebo emulátor se systémem Android 5.0 nebo vyšším

1. Vytvořte MongoDB Atlas Cluster

MongoDB Stitch je určen k použití s ​​clusterem MongoDB Atlas. Můžete volně používat cluster, který již máte, ale pro tento výukový program vám doporučuji vytvořit nový.

Začněte přihlášením ke svému účtu MongoDB Atlas a stisknutím tlačítka Vytvořit nový klastr tlačítko.

Na další obrazovce, která vás požádá o podrobnosti o konfiguraci vašeho nového clusteru, vyberte libovolného poskytovatele cloudu, region, který nabízí cluster na bezplatnou úroveň M0, a stiskněte Vytvořit cluster tlačítko.

Po několika minutách budete mít zcela nový bezplatný cluster s názvem Cluster0 .

2. Vytvořte aplikaci MongoDB Stitch

Chcete-li ke svému clusteru přidružit aplikaci Stitch, klikněte na Propojit aplikaci odkaz. Na stránce, která se otevře, stiskněte tlačítko Vytvořit novou aplikaci tlačítko.

Nyní můžete zadat název, který chcete pro svou novou aplikaci Stitch. Poté se ujistěte, že je vybrán správný cluster, a stiskněte Vytvořit tlačítko.

V tuto chvíli je vaše aplikace Stitch – s velmi štědrými kvótami zdarma – připravena.

Aplikace má jedinečné ID, které budete potřebovat při vývoji aplikace pro Android. O co se jedná, se můžete podívat na Klienti a otevřením Java (Android) kartu.

3. Konfigurace uživatelů a pravidel

Pomocí MongoDB Stitch můžete bezpečně psát webový a mobilní front-end kód pro interakci s MongoDB Atlas clusterem. To je možné, protože do kódu nebudete muset zahrnout připojovací řetězec obsahující adresu serveru vaší databáze, uživatelské jméno a heslo.

Ověření koncoví uživatelé vaší aplikace Stitch automaticky získají přístup k vaší databázi. Pomocí jednoho nebo více pravidel však můžete přesně řídit, které dokumenty a pole mohou zobrazit nebo upravit.

K autentizaci vašich uživatelů nabízí Stitch několik ověřovacích mechanismů, včetně anonymní autentizace, e-mailu/hesla a autentizace pomocí oblíbených poskytovatelů federovaných identit. V tomto tutoriálu budeme používat anonymní ověřování. Chcete-li jej nastavit, přejděte na Uživatelé a otevřete Poskytovatelé kartu.

Dále vyberte možnost Povolit uživatelům anonymní přihlášení možnost, povolte ji a stiskněte tlačítko Uložit tlačítko.

Řekněme, že chceme umožnit našim anonymním uživatelům pracovat pouze s dokumenty, které vlastní. Chcete-li vytvořit takové pravidlo, přejděte na Pravidla sekce.

Protože pravidla platí pro kolekce, stiskněte Přidat kolekci tlačítko pro vytvoření nové kolekce nyní. V zobrazeném formuláři jej pojmenujte a určete, do které databáze musí patřit. Poté vyberte možnost Uživatelé mohou pouze číst a zapisovat svá vlastní data šablona pravidel.

Při výběru šablony budete vyzváni k zadání názvu pole ve vašem dokumentu, do kterého budete ukládat automaticky vygenerované ID ověření Stitch uživatele. Stitch použije toto pole při rozhodování, zda dokument patří uživateli nebo ne. Řekněme, že jméno je user_id a odešlete formulář.

Na stránce, která se otevře, nyní můžete potvrdit, že operace čtení a zápisu s nimi mohou provádět pouze vlastníci dokumentů ve vaší sbírce.

4. Připravte projekt Android

Abyste mohli Stitch používat ve svém projektu Android Studio, musíte přidat jeho oficiální SDK jako implementation závislost ve vaší app build.gradle modulu soubor.

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

Kromě toho musíte ve svém projektu uvést jedinečné ID aplikace Stitch. Přejděte tedy na res/values/strings.xml a přidejte jej jako <string> tag.

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

5. Vytvořit připojení

S instancí StitchAppClient třídy, můžete snadno využívat všechny funkce, které platforma Stitch nabízí. Pro inicializaci inicializujte StitchAppClient , musíte zavolat initializeDefaultAppClient() metodu a předejte jí ID aplikace Stitch. Toto je třeba v aplikaci provést pouze jednou, nejlépe hned po jejím spuštění.

Jakmile bude připraven, můžete zavolat getDefaultAppClient() způsob, jak získat referenci na klienta. Následující kód, který můžete přidat do onCreate() vaší aktivity metoda, vám ukáže jak:

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

val stitchAppClient = Stitch.getDefaultAppClient()

Pokud váš uživatel není přihlášen do vaší aplikace Stitch, nebudete moci provádět žádné užitečné operace na clusteru MongoDB Atlas. Proto nyní musíte uživatele přihlásit voláním loginWithCredential() metoda, která běží asynchronně a vrací Task objekt. Navíc, protože jste jako mechanismus ověřování ve webové konzoli Stitch zvolili anonymní ověřování, ujistěte se, že předáváte instanci AnonymousCredential třídy k metodě.

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

V tomto okamžiku, pokud aplikaci spustíte, Stitch vás automaticky zaregistruje jako nového uživatele a také vás přihlásí do aplikace. A co víc, pokud se vrátíte do webové konzole Stitch a otevřete Uživatelé sekce, uvidíte, že do seznamu uživatelů byl přidán nový záznam.

6. Vložit dokumenty

Po úspěšném ověření můžete pokračovat a získat instanci RemoteMongoClient třídy, abyste mohli začít komunikovat s clusterem MongoDB Atlas. Chcete-li to provést, můžete zavolat getServiceClient() a zadejte, že název požadované služby je "mongodb-atlas ". Zde je postup:

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

Pamatujte, že díky pravidlu, které jste vytvořili dříve v tomto tutoriálu, může váš uživatel provádět operace čtení a zápisu pouze na svých vlastních datech. Kromě toho je váš uživatel omezen na práci pouze s databází a kolekcí, kterou jste zmínili ve webové konzoli Stitch.

Chcete-li získat odkaz na databázi, zavolejte getDatabase() metodu a předat jí její název. Podobně, chcete-li získat odkaz na kolekci, zavolejte getCollection() metoda, která vrací RemoteMongoCollection objekt.

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

Co si do sbírky přidáte, je samozřejmě na vás. Pro příklad řekněme, že chceme přidat dokumenty obsahující časová razítka všech časů, kdy uživatel aplikaci otevřel.

Chcete-li vytvořit nový dokument BSON, musíte použít konstruktor Document třída. Protože Document objekty jsou velmi podobné mapám, můžete použít [] operátor k nim přidat páry klíč–hodnota.

Následující kód ukazuje, jak vytvořit nový dokument a přidat k němu časové razítko:

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

Kromě vašich dat musí všechny vaše dokumenty obsahovat ID ověření Stitch uživatele. Bez něj vaše operace vkládání selžou. Chcete-li získat auth ID, můžete přímo použít id vlastnost implicitního it objekt dostupný v rámci úspěšného posluchače.

myFirstDocument["user_id"] = it.id

Nyní můžete vložit dokument voláním insertOne() metoda. (Můžete si přečíst o insertOne() metoda a další operace zápisu v dokumentaci MongoDB pro ovladač Java.) Protože běží asynchronně, budete potřebovat další naslouchací proces, který zkontroluje, zda operace vložení proběhla úspěšně.

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

Pokud nyní aplikaci spustíte a zkontrolujete Logcat aplikace Android Studio panelu, měli byste vidět záznam protokolu, který vypadá takto:

7. Spustit dotazy

Zavoláním find() metoda vaší RemoteMongoCollection objekt, můžete vytvořit dotaz. (Více se můžete dozvědět o find() a další operace dotazů v dokumentaci ovladače MongoDB Java.)Metoda vrací RemoteFindIterable objekt, na kterém můžete volat více metod, jako je sort() a limit() spravovat výsledky dotazu. Například následující kód vytvoří dotaz k nalezení posledních pěti dokumentů vytvořených uživatelem:

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

Chcete-li dotaz skutečně spustit, můžete zavolat jeho into() metoda, která očekává seznam jako argument. Jak jeho název napovídá, načte výsledky dotazu, které nejsou nic jiného než Document objektů, do seznamu, který mu předáte. Běží asynchronně, takže seznam můžete začít používat pouze v rámci úspěšného posluchače.

val result = mutableListOf<Document>()

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

Pro zjednodušení prozatím použijeme TextView widget pro zobrazení výsledků dotazu. Přidejte tedy následující kód do souboru XML rozvržení vaší aktivity:

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

Zpět uvnitř úspěšného posluchače můžete nyní procházet seznamem a vytvořit zřetězený řetězec obsahující všechna časová razítka. Volitelně můžete předat časová razítka do getRelativeDateTimeString() metoda DateUtils třídy, aby byly čitelnější. Jakmile je řetězec připraven, můžete jej přímo přiřadit k TextView widget. Zde je postup:

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

Pokud aplikaci znovu spustíte, měli byste nyní na svém zařízení vidět něco takového:


  1. Jak mohu vygenerovat ObjectId pomocí mongoose?

  2. mongoDB/mongoose:jedinečný, pokud není null

  3. Výukový program PyMongo:Testování selhání MongoDB ve vaší aplikaci Python

  4. Limit hloubky pole vnořeného objektu MongoDB