MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Как да използвате MongoDB Stitch в приложения за Android

С MongoDB Atlas всичко, което е необходимо, е няколко щраквания в браузъра, за да стартирате и стартирате вашия собствен MongoDB клъстер в облака. Използвайки го, можете да създавате приложения за Android и iOS, които могат ефективно да обслужват милиони потребители. Все пак ще ви е необходим беден сървър, който може да действа като посредник между устройствата на вашите потребители и вашия клъстер. Ще ви е необходим, за да наложите политики за сигурност, да добавите ниво на абстракция към вашите CRUD операции, да планирате задания и за много други подобни важни задачи.

  • MongoDBCСъздайте клъстер от база данни в облака с MongoDB AtlasAshraff Hathibelagal

MongoDB Stitch е мощна платформа без сървър, която може да отговори на всички ваши бек-енд изисквания. В допълнение към предоставянето на фин контрол на достъпа до данните във вашия MongoDB Atlas клъстер, той предлага базирана на JavaScript изчислителна среда, която можете да използвате за извършване на голямо разнообразие от операции от страна на сървъра. В този урок ще ви покажа как да използвате платформата в приложение за Android.

Предварителни условия

За да следвате, ще ви трябва:

  • профил в MongoDB Atlas
  • най-новата версия на Android Studio
  • устройство или емулатор с Android 5.0 или по-нова версия

1. Създайте MongoDB Atlas Cluster

MongoDB Stitch е предназначен да се използва с MongoDB Atlas клъстер. Свободни сте да използвате клъстер, който вече имате, но ви предлагам да създадете нов за този урок.

Започнете, като влезете в акаунта си в MongoDB Atlas и натиснете Създаване на нов клъстер бутон.

В следващия екран, който ви пита за подробности за конфигурацията за вашия нов клъстер, изберете произволен доставчик на облак, регион, който предлага безплатен клъстер от ниво M0, и натиснете Създаване на клъстер бутон.

След няколко минути ще имате чисто нов безплатен клъстер от ниво на име Cluster0 .

2. Създайте MongoDB Stitch приложение

За да свържете приложение Stitch с вашия клъстер, щракнете върху Приложение за връзка връзка. На следващата страница, която се отваря, натиснете Създаване на ново приложение бутон.

Вече можете да въведете името, което искате за вашето ново приложение за Stitch. След като го направите, уверете се, че е избран правилният клъстер и натиснете Създаване бутон.

В този момент вашето приложение Stitch — с много щедри безплатни квоти — е готово.

Приложението има уникален идентификатор, който ще ви е необходим, докато разработвате приложението си за Android. Можете да видите какво представлява, като отидете на Клиенти раздел и отваряне на Java (Android) раздел.

3. Конфигуриране на потребители и правила

С помощта на MongoDB Stitch можете безопасно да пишете уеб и мобилен преден код, за да взаимодействате с вашия MongoDB Atlas клъстер. Това е възможно, защото няма да ви се налага да включвате низ за връзка, съдържащ адреса на сървъра на вашата база данни, потребителско име и парола във вашия код.

Удостоверените крайни потребители на вашето приложение Stitch автоматично получават достъп до вашата база данни. С помощта на едно или повече правила обаче можете да контролирате точно кои документи и полета могат да виждат или променят.

За удостоверяване на вашите потребители, Stitch предлага няколко механизма за удостоверяване, включително анонимно удостоверяване, удостоверяване на имейл/парола и удостоверяване с помощта на популярни федерални доставчици на идентичност. В този урок ще използваме анонимно удостоверяване. За да го настроите, отидете на Потребители раздел и отворете Доставчици раздел.

След това изберете Разрешаване на потребителите да влизат анонимно опцията, активирайте я и натиснете Запазване бутон.

Да кажем, че искаме да позволим на нашите анонимни потребители да работят само с документите, които притежават. За да създадете такова правило, отидете на Правила раздел.

Тъй като правилата се прилагат към колекциите, натиснете Добавяне на колекция бутон, за да създадете нова колекция сега. Във формата, която се показва, дайте му име и посочете към коя база данни трябва да принадлежи. След като направите това, изберете Потребителите могат да четат и записват само свои собствени данни шаблон за правила.

Когато изберете шаблона, ще бъдете подканени да посочите името на полето във вашия документ, в което ще съхранявате автоматично генерирания идентификационен номер на Stitch на потребителя. Stitch ще използва това поле, докато решава дали даден документ принадлежи на потребител или не. Кажете, че името е user_id и изпратете формуляра.

На следващата страница, която се отваря, вече можете да потвърдите, че само собствениците на документите във вашата колекция могат да извършват операции за четене и запис върху тях.

4. Подгответе Android проект

За да можете да използвате Stitch във вашия проект за Android Studio, трябва да добавите неговия официален SDK като implementation зависимост във вашето app build.gradle на модула файл.

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

Освен това трябва да споменете уникалния идентификатор на приложението си Stitch във вашия проект. Затова отидете на res/values/strings.xml файл и го добавете като <string> етикет.

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

5. Установете връзка

С екземпляр на StitchAppClient клас, можете лесно да се възползвате от всички функции, които платформата Stitch предлага. За да инициализирате инициализирайте StitchAppClient , трябва да извикате initializeDefaultAppClient() метод и му предайте идентификатора на приложението си Stitch. Това трябва да се направи само веднъж във вашето приложение, за предпочитане веднага щом стартира.

След като е готов, можете да извикате getDefaultAppClient() метод за получаване на препратка към клиента. Следният код, който можете да добавите към onCreate() на вашата активност метод, ви показва как:

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

val stitchAppClient = Stitch.getDefaultAppClient()

Освен ако вашият потребител не е влязъл във вашето приложение Stitch, няма да можете да извършвате никакви полезни операции във вашия MongoDB Atlas клъстер. Следователно, сега трябва да влезете в потребителя, като извикате loginWithCredential() метод, който работи асинхронно и връща Task обект. Освен това, тъй като сте избрали анонимно удостоверяване като механизъм за удостоверяване в уеб конзолата на Stitch, уверете се, че сте предали екземпляр на AnonymousCredential клас към метода.

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

В този момент, ако стартирате приложението, Stitch автоматично ще ви регистрира като нов потребител и ще ви влезе в приложението. Нещо повече, ако се върнете в уеб конзолата на Stitch и отворите Потребители раздел, ще можете да видите, че към списъка с потребители е добавен нов запис.

6. Вмъкване на документи

След успешно удостоверяване можете да продължите и да получите екземпляр на RemoteMongoClient клас, за да започнете да взаимодействате с вашия MongoDB Atlas клъстер. За да направите това, можете да извикате getServiceClient() метод и посочете, че името на услугата, която искате, е "mongodb-atlas ". Ето как:

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

Не забравяйте, че благодарение на правилото, което сте създали по-рано в този урок, вашият потребител може да извършва операции за четене и запис само върху свои собствени данни. Освен това вашият потребител е ограничен да работи само с базата данни и колекцията, които споменахте в уеб конзолата на Stitch.

За да получите препратка към базата данни, извикайте getDatabase() метод и му предайте името му. По същия начин, за да получите препратка към колекцията, извикайте getCollection() метод, който връща RemoteMongoCollection обект.

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

Какво ще добавите към колекцията, разбира се, зависи от вас. За пример, да кажем, че искаме да добавим документи, съдържащи времеви печати за всички моменти, в които потребителят е отворил приложението.

За да създадете нов BSON документ, трябва да използвате конструктора на Document клас. Тъй като Document обектите са много подобни на картите, можете да използвате [] оператор, за да добавите двойки ключ-стойност към тях.

Следният код ви показва как да създадете нов документ и да добавите времеви печат към него:

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

В допълнение към вашите данни, всички ваши документи трябва да съдържат потребителския идентификационен номер на Stitch. Без него операциите ви за вмъкване ще се провалят. За да получите идентификатора за удостоверяване, можете директно да използвате id свойство на имплицитния it обект, наличен в слушателя при успех.

myFirstDocument["user_id"] = it.id

Вече можете да вмъкнете документа, като извикате insertOne() метод. (Можете да прочетете за insertOne() метод и други операции за запис в документацията на MongoDB за драйвера на Java.) Тъй като работи асинхронно, ще ви е необходим друг слушател при успех, за да проверите дали операцията вмъкване е успешна.

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

Ако стартирате приложението сега и проверете Logcat на Android Studio панел, трябва да можете да видите запис в дневника, който изглежда така:

7. Изпълнете заявки

Чрез извикване на find() метод на вашия RemoteMongoCollection обект, можете да създадете заявка. (Можете да научите повече за find() и други операции на заявка в документацията на MongoDB Java драйвер.) Методът връща 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

Ако стартирате приложението отново, сега трябва да видите нещо подобно на устройството си:


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB :рамка за агрегиране:$ съвпадение между полета

  2. Как да заявявам вложени обекти?

  3. Как да слушате за промени в колекция MongoDB?

  4. Оператори за агрегиране на MongoDB за връщане на части за дата

  5. Получаване на отделно агрегиране на поле на масив между индекси