MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Jak korzystać z MongoDB Stitch w aplikacjach na Androida

Dzięki MongoDB Atlas wystarczy kilka kliknięć w przeglądarce, aby uruchomić własny klaster MongoDB i uruchomić go w chmurze. Korzystając z niego, możesz tworzyć aplikacje na Androida i iOS, które mogą wydajnie obsługiwać miliony użytkowników. Jednak nadal potrzebujesz serwera zaplecza, który może działać jako pośrednik między urządzeniami użytkowników a klastrem. Potrzebujesz go do egzekwowania zasad bezpieczeństwa, dodawania poziomu abstrakcji do operacji CRUD, planowania zadań i wielu innych ważnych zadań.

  • MongoDBUtwórz klaster baz danych w chmurze za pomocą MongoDB AtlasAshraff Hathibelagal

MongoDB Stitch to potężna platforma bezserwerowa, która może spełnić wszystkie wymagania dotyczące zaplecza. Oprócz zapewniania precyzyjnej kontroli dostępu do danych w klastrze MongoDB Atlas oferuje środowisko obliczeniowe oparte na języku JavaScript, którego można używać do wykonywania różnorodnych operacji po stronie serwera. W tym samouczku pokażę, jak korzystać z platformy w aplikacji na Androida.

Wymagania wstępne

Aby kontynuować, potrzebujesz:

  • konto MongoDB Atlas
  • najnowsza wersja Android Studio
  • urządzenie lub emulator z Androidem 5.0 lub nowszym

1. Utwórz klaster MongoDB Atlas

MongoDB Stitch jest przeznaczony do użytku z klastrem MongoDB Atlas. Możesz używać klastra, który już masz, ale sugeruję utworzenie nowego na potrzeby tego samouczka.

Zacznij od zalogowania się na swoje konto MongoDB Atlas i naciśnięcia przycisku Zbuduj nowy klaster przycisk.

Na następnym ekranie z prośbą o szczegóły konfiguracji nowego klastra wybierz dowolnego dostawcę chmury, region, który oferuje klaster bezpłatnej warstwy M0, i naciśnij Utwórz klaster przycisk.

Po kilku minutach będziesz mieć zupełnie nowy bezpłatny klaster poziomu o nazwie Cluster0 .

2. Utwórz aplikację MongoDB Stitch

Aby powiązać aplikację Stitch z klastrem, kliknij Połącz aplikację połączyć. Na następnej stronie, która się otworzy, naciśnij Utwórz nową aplikację przycisk.

Możesz teraz wpisać nazwę, którą chcesz dla swojej nowej aplikacji Stitch. Po wykonaniu tej czynności upewnij się, że wybrano właściwy klaster i naciśnij Utwórz przycisk.

W tym momencie Twoja aplikacja Stitch — z bardzo hojnymi bezpłatnymi limitami — jest gotowa.

Aplikacja ma unikalny identyfikator, którego będziesz potrzebować podczas tworzenia aplikacji na Androida. Możesz zobaczyć, co to jest, przechodząc do Klientów i otwierając Java (Android) zakładka.

3. Skonfiguruj użytkowników i reguły

Używając MongoDB Stitch, możesz bezpiecznie pisać internetowy i mobilny kod frontonu, aby współdziałać z klastrem MongoDB Atlas. Jest to możliwe, ponieważ nie musisz umieszczać w kodzie ciągu połączenia zawierającego adres serwera bazy danych, nazwę użytkownika i hasło.

Uwierzytelnieni użytkownicy końcowi aplikacji Stitch automatycznie uzyskują dostęp do Twojej bazy danych. Korzystając z jednej lub więcej reguł, możesz jednak dokładnie kontrolować, które dokumenty i pola mogą zobaczyć lub zmodyfikować.

Aby uwierzytelnić użytkowników, Stitch oferuje kilka mechanizmów uwierzytelniania, w tym uwierzytelnianie anonimowe, uwierzytelnianie poczty e-mail/hasłem oraz uwierzytelnianie przy użyciu popularnych dostawców tożsamości federacyjnych. W tym samouczku będziemy używać uwierzytelniania anonimowego. Aby to skonfigurować, przejdź do Użytkownicy i otwórz sekcję Dostawcy zakładka.

Następnie wybierz Zezwalaj użytkownikom na anonimowe logowanie opcję, włącz ją i naciśnij Zapisz przycisk.

Załóżmy, że chcemy umożliwić naszym anonimowym użytkownikom pracę tylko z dokumentami, których są właścicielami. Aby utworzyć taką regułę, przejdź do Reguły sekcja.

Ponieważ reguły są stosowane do kolekcji, naciśnij Dodaj kolekcję przycisk, aby teraz utworzyć nową kolekcję. W wyświetlonym formularzu nadaj mu nazwę i określ, do której bazy danych ma należeć. Po wykonaniu tej czynności wybierz Użytkownicy mogą tylko odczytywać i zapisywać własne dane szablon reguł.

Po wybraniu szablonu zostaniesz poproszony o określenie nazwy pola w dokumencie, w którym będzie przechowywany automatycznie wygenerowany identyfikator uwierzytelniania ściegu użytkownika. Stitch użyje tego pola podczas decydowania, czy dokument należy do użytkownika, czy nie. Powiedz, że nazwa to user_id i wyślij formularz.

Na stronie, która zostanie otwarta w następnej kolejności, możesz teraz potwierdzić, że tylko właściciele dokumentów w Twojej kolekcji mogą wykonywać na nich operacje odczytu i zapisu.

4. Przygotuj projekt Androida

Aby móc używać Stitch w projekcie Android Studio, musisz dodać jego oficjalny pakiet SDK jako implementation zależność w Twojej app build.gradle modułu plik.

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

Dodatkowo w swoim projekcie musisz podać unikalny identyfikator aplikacji Stitch. Przejdź więc do res/values/strings.xml plik i dodaj go jako <string> tag.

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

5. Nawiąż połączenie

Z instancją StitchAppClient klasy, możesz łatwo korzystać ze wszystkich funkcji oferowanych przez platformę Stitch. Aby zainicjować inicjalizację StitchAppClient , musisz wywołać initializeDefaultAppClient() metody i przekaż do niej identyfikator aplikacji Stitch. Należy to zrobić tylko raz w aplikacji, najlepiej zaraz po jej uruchomieniu.

Gdy będzie gotowy, możesz wywołać getDefaultAppClient() metoda uzyskania referencji do klienta. Poniższy kod, który możesz dodać do onCreate() swojej aktywności metoda, pokazuje jak:

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

val stitchAppClient = Stitch.getDefaultAppClient()

Jeśli użytkownik nie jest zalogowany w aplikacji Stitch, nie będzie można wykonywać żadnych przydatnych operacji w klastrze MongoDB Atlas. Dlatego musisz teraz zalogować użytkownika, wywołując loginWithCredential() metoda, która działa asynchronicznie i zwraca Task obiekt. Dodatkowo, ponieważ wybrałeś uwierzytelnianie anonimowe jako mechanizm uwierzytelniania w konsoli internetowej Stitch, upewnij się, że przekazujesz wystąpienie AnonymousCredential klasę do metody.

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

W tym momencie, jeśli uruchomisz aplikację, Stitch automatycznie zarejestruje Cię jako nowego użytkownika, a także zaloguje Cię do aplikacji. Co więcej, jeśli wrócisz do konsoli internetowej Stitch i otworzysz Użytkownicy sekcji, będziesz mógł zobaczyć, że nowy wpis został dodany do listy użytkowników.

6. Wstaw dokumenty

Po pomyślnym uwierzytelnieniu możesz przejść dalej i uzyskać instancję RemoteMongoClient klasy, aby rozpocząć interakcję z klastrem MongoDB Atlas. Aby to zrobić, możesz wywołać getServiceClient() i określ, że nazwa żądanej usługi to „mongodb-atlas ". Oto jak:

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

Pamiętaj, że dzięki regule, którą stworzyłeś wcześniej w tym samouczku, Twój użytkownik może wykonywać tylko operacje odczytu i zapisu na własnych danych. Co więcej, twój użytkownik jest ograniczony do pracy tylko z bazą danych i kolekcją wspomnianą w konsoli internetowej Stitch.

Aby uzyskać odwołanie do bazy danych, wywołaj getDatabase() metody i przekaż jej nazwę. Podobnie, aby uzyskać odwołanie do kolekcji, wywołaj funkcję getCollection() metoda, która zwraca RemoteMongoCollection obiekt.

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

To, co dodasz do kolekcji, zależy oczywiście od Ciebie. Dla przykładu załóżmy, że chcemy dodać dokumenty zawierające sygnatury czasowe wszystkich godzin otwarcia aplikacji przez użytkownika.

Aby utworzyć nowy dokument BSON, musisz użyć konstruktora Document klasa. Ponieważ Document obiekty są bardzo podobne do map, możesz użyć [] operator, aby dodać do nich pary klucz-wartość.

Poniższy kod pokazuje, jak utworzyć nowy dokument i dodać do niego znacznik czasu:

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

Oprócz Twoich danych wszystkie Twoje dokumenty muszą zawierać identyfikator uwierzytelniania Stitch użytkownika. Bez tego operacje wstawiania zakończą się niepowodzeniem. Aby uzyskać identyfikator uwierzytelniania, możesz bezpośrednio użyć id właściwość niejawnego it obiekt dostępny w odbiorniku powodzenia.

myFirstDocument["user_id"] = it.id

Możesz teraz wstawić dokument, wywołując insertOne() metoda. (Możesz przeczytać o insertOne() metody i innych operacji zapisu w dokumentacji MongoDB dla sterownika Java).

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

Jeśli uruchomisz aplikację teraz i sprawdź Logcat w Android Studio panel, powinieneś być w stanie zobaczyć wpis w dzienniku, który wygląda tak:

7. Uruchom zapytania

Wywołując find() metoda twojego RemoteMongoCollection obiekt, możesz utworzyć zapytanie. (Możesz dowiedzieć się więcej o find() i inne operacje zapytań w dokumentacji sterownika MongoDB Java). Metoda zwraca RemoteFindIterable obiekt, na którym można wywołać więcej metod, takich jak sort() i limit() do zarządzania wynikami zapytania. Na przykład poniższy kod tworzy zapytanie, aby znaleźć pięć ostatnich dokumentów utworzonych przez użytkownika:

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

Aby faktycznie uruchomić zapytanie, możesz wywołać jego into() metoda, która oczekuje listy jako argumentu. Jak sama nazwa wskazuje, ładuje wyniki zapytania, które są niczym innym jak Document obiektów, na listę, którą mu przekazujesz. Działa asynchronicznie, więc możesz zacząć korzystać z listy tylko w odbiorniku, który zakończył się sukcesem.

val result = mutableListOf<Document>()

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

Na razie, aby wszystko było proste, użyjmy TextView widget do wyświetlania wyników zapytania. Dodaj więc następujący kod do pliku XML układu Twojej aktywności:

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

Wracając do odbiornika pomyślnego, możesz teraz przejść przez listę i utworzyć połączony ciąg zawierający wszystkie sygnatury czasowe. Opcjonalnie możesz przekazać sygnatury czasowe do getRelativeDateTimeString() metoda DateUtils klasę, aby były bardziej czytelne. Gdy ciąg jest gotowy, możesz bezpośrednio przypisać go do TextView widget. Oto jak:

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

Jeśli uruchomisz aplikację ponownie, powinieneś zobaczyć na swoim urządzeniu coś takiego:


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Podręcznik DevOps Open-Source do audytu baz danych — wszystko, co powinieneś wiedzieć

  2. Porównanie agregacji MongoDB:group(), $group i MapReduce

  3. Węzeł MongoDB sprawdza, czy identyfikator obiektu jest prawidłowy

  4. MongoDB 2.1 Aggregate Framework Sum of Array Elements pasujących do nazwy

  5. Średnie kroczące w ramach agregacji MongoDB?