Unlimited Plugins, WordPress themes, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. Android SDK
Code

Започнување со Cloud Firestore за Андроид

by
Length:MediumLanguages:

Macedonian (Македонски јазик) translation by Sara Kostova (you can also view the original English article)

Cloud Firestore e неодамнешен додаток на семејството на Firebase производи. Иако сеуште е во бета верзија, Гугл веќе го претстави како пофлексибилна и побогата алтернатива од Firebase Realtime Database.

Ако некогаш сте ја користеле Базата на податоци во реално време (Realtime Database), веројатно сте свесни дека тоа во суштина е голем JSON документ кој најдобро одговара за складирање едноставни парови со клучна вредност. Ефикасното и безбедно складирање на хиерархиските податоци, иако е можно, е доста тешко и бара добро осмислена стратегија, која обично вклучува изедначување на податоците што е можно повеќе или денормализирање на истата. Без таква стратегија, пребарувањата во Базата на податоци во реално време веројатно ќе конзумират големи непотребни количини на проток (bandwidth).

Cloud Firestore, кој повеќе е сличен на докуемнтски ориентираните бази на податоци како што се MongoDB и CouchDB, нема такви проблеми. Покрај тоа, тој доаѓа со голем број на практични функции, како што се поддршка за сериски операции, атомски пишувања и индексирани пребарувања.

Во ова упатство ќе ви помогнам да започнете со користење на Cloud Firestore во Андроид платформата.

Предуслови

За да можете да го следите ова упатство потребни ви се:

  • Последната верзија на Android Studio
  • Firebase корисничка сметка
  • и уред или емулатор кој работи со верзија Android 4.4 или повисока

1. Креирање на Firebase проект

Пред да започнете со користење на Firebase производите во вашата Андроид апликација, треба да креирате нов пројект во Firebase конзолата. За да го направите тоа, најавете се во конзолата и притиснете на Add project копче во почетниот екран.

Welcome screen of Firebase console

Во диалог прозорецот што се појавува, доделете му значајно име на проектот, по можност доделете му и него значаен ID, и притиснете на Create Project копчето.

Add a project dialog

Откако ќе го креирате проектот, можете како негова база на податоци да го поставите Firestore, за да го направите тоа одете во Develop > Database и притиснете на Try Firestore Beta копчето.

Database selection page

Во следниот екран, бидете сигурни да ја изберете Start in test mode опцијата и притиснете на Enable копчето.

Firestore security configuration page

Во овај момент, ќе имате празна Firestore база на податоци спремна за да биде користена во вашата апликација.

Empty Firestore database

2. Конфигурирање на Android проектот.

Вашиот Android Studio проект сеуште не знае ништо за Firebase проектот кој го креиравте во претходниот чекор. Најлесниот начин да воспоставите врска помеѓу двата е да го користите Firebase Assistant (Firebase асистентот) на Android Studio.

Одете во Tools > Firebase за да го отворите асистентот.

Firebase Assistant window

Затоа што Firestore сеуште е во бета верзија, тој не е подржан од Асистентот, со додавање на Firebase Analytics на вашата апликација, вие ќе ги автоматизирате повеќето од потребните конфигурациски чекори.

Започнете со притискање на Log an Analytics Event линкот под делот Analytics и притиснете на Connect to Firebase копчето. Сега треба да се појави нов пребарувачки прозорец прашувајќи ве дали сакате да дозволите Android Studio, меѓу другото, да управува со Firebase податоците.

Android Studio requesting permissions

Притиснете го Allow копчето за да продолжете.

Назад во Android Studio, во дијалогот коишто ќе се појавува, одберете ја Choose an existing Firebase or Google project опцијата, изберете го Firebase проектот коишто претходно го креиравте, и притиснете на Connect to Firebase копчето.

Connect to Firebase dialog

Следно, притиснете на Add Analytics to your app копчето за да ги додадете основните Firebase зависности во вашиот проект.

На крај, за да ја додадете Firestore implementation како зависност напишете ја следната линија код во app модулот build.gradle датотека:

Не заборавајте да притисните на Sync Now копчето за да ја комплетирате конфигурацијата. Ако наидете на било какви грешки при конфликт на верзијата за време на процесот на синхронизација, осигурајте се дека верзиите на зависноста од Firestore и зависноста на Firebase Core се идентични и обидете се повторно. 

3. Разбирање на Документи и Колекции

Firestore е една NoSQL база на податоци која овозможува складирање на податоци во форма слична на JSON документ. Сепак, зачуваниот документ не може да биде независно зачуван во неа. Тој секогаш мора да припаѓа на некоја колекција. Како што и самото име сугерира, колекција не е ништо повеќе од еден куп документи.

Очигледно е дека документите во колекција се во врска (брат - сестра). Доколку сакате да воспоставите врска родител - дете, ќе мора да користите подколекции. Подколекција е само една колекција која му припаѓа на некој документ. По дифолт, документот автоматски станува родител на сите документи кој припаѓаат во неговата подколекција.

Вреди и да се спомене дека Firestore сам по себе го менаџира и создавањето и бришењето на колекциите и на подколекциите. Кога и да пробате да додадете документ на една непостоечка колекција, тој ја создава колекцијата. Слично на тоа, откако ќе ги избришите сите документи од колекција, тој ја бриши колекцијата.

4. Создавање на документи

За да можете да пишувате во Firestore базата на податоци од Вашата Android апликација, ќе мора прво да добиете негова референца со повикување на getInstance() функцијата од FirebaseFirestore класата

Следно, мора да создадете нова колекција или да добиете референца од веќе постоечка колекција, тоа го правите со повикување на collection() функцијата. На пример, во една празна база на податоци, следниот код создава нова колекција со име solar_system:

Откако ќе имате референца од колекцијата, можете да започнете со додавање на документи во неа со повикување на функцијата add(), која очекува објект од типот на мапа како аргумент.

add() функцијата автоматски генерира и определува уникатен алфанумерички идентификатор на секој документ кој го креира. Доколку наместо тоа сакате вашите документи да го содржат вашиот сопстен клуч, ќе мора најпрво рачно да ги креирате тие документи со повикување на document() функцијата, која зема уникатен ИД String објект како влез. Потоа ќе можете да ги пополните документите со повикување на set() функцијата, која како add функцијата, очекува Мап објект како нејзин единствен аргумент

На пример, следниот код креира и поплнува нов документ наречен PLANET_EARTH:

Ако одите во Firebase конзолата и погледнете во содржината на базата на податоците, лесно ќе го забележите индивидуалниот ИД.

New entries in the Firestore database

Внимавајте set() функцијата ќе ја презапише содржината на придружниот документ доколку индивидуалниот ИД кои го проследувате на document() функцијата веќе постои во базата на податоци.

5. Создавање на подколекции

Поддршката за подколекции е една од најмоќните карактеристики на Firestore, и ја прави значително по различна од Firebase Realtime Database (базата на податоци во реално време). Користејќи подколекции, не само што ви овозможува лесно да додадете вгнездени структури во вашите податоци, туку исто така бидете сигурни дека вашите барања ќе трошат минимални количини на проток (bandwidth).

Создавањето на подколекции е слично како создавање на колекција. Се што треба да направите е да ја повикате collection() функцијата на објектот DocumentReference и да и подадете еден String објект кој ќе биде користен како име на оваа подколекција.

На пример, следниот програмски код создава субколекција наречена satellites и ја поврзвуа со PLANET_EARTH документот:

Откако ќе имате референца од подколекција, слободно можете да ги повикате add() или set() функциите за да додадете документи во неа.

Откако ќе го извршите горенаведениот програмски код, PLANET_EARTH документот ќе изгледа вака во Firebase конзолата.

Subcollection of a document

7. Извршување на Барања

Изведувањето на операција која ќе ја чита вашата Firestore база на податоци е многу лесно ако го знаете ИД-то на документот коишто сакате да го прочитате. Зошто? Затоа што можете дирекно да добиете референца од документот со повикување на collection() и document() функциите. На пример, еве како ќе добиете референца до PLANET_EARTH документот кои припаѓа на solar_system колекцијата:

За да ја прочитате содржината на документот, мора да ја повикате асинхроничната get() функција, која враќа Task објект. Со додавање на OnSuccessListener, можете да бидете известени кога операцијата за читање е успешно завршена.

Резултатот од читањето е DocumentSnapshot објект, кој ги содржи клуч-вредност паровите присутни во овај документ. Со користење на неговата get() функција, можете да ја добиете вредноста на секој валиден клуч. Следниот пример ви кажува како:

Доколку не го знаете ИД на документот кои сакате да го прочитате, треба да извршите традиционалено пребарување низ целата колекција. Firestore API (Апликациски Програмски Интерфејс) нуди интуитивно именувани фукции на филтри како: whereEqualTo()whereLessThan(), и whereGreaterThan(). Затоа што филтер функциите можат да вратат повеќе документи како резултат, ќе треба да поставите јамка внатре во OnSuccessListener за да се справите со секој резултат.

На пример, за да ја добиеме содржината на документот за планетата Венус, која ја додадовме во некој од претходните чекори, можете да го искористите следниот код:

На крај, доколку сте заинтересирани да ги прочитате сите документи кои му припаѓаат на колекцијата, можете директно да ја повикате функцијата get() во колекцијата. На пример, еве како можете да ги наброите сите планети присутни во solar_system колекцијата :

Имајте на ум дека, по дифолт, нема дефинитивен редослед во кој се враќаат резултатите. Доколку сакате тие да бидат подредени врз основа на клуч кој е достапен во сите резултати, можете да ја искористите orderBy() функцијата. Следниот код ги подредува резултатите врз основа на вредноста на number клучот:

8. Бришење на податоците

За да избришете документ со ИД кое го знаете, се што треба да направите е да добиете референца од неа и потоа да ја повикате delete() функцијата

Бришење на повеќе документи - документи кои ги добивате како резултат од пребарувањето - е малку покомплицирано затоа што не постои вградена функција за тоа. Постојат два различни пристапи кои можете да ги следите.

Најлесен и најинтуитивен пристап - иако тој е погоден само за мал број на документи - е да се постави јамка во резултатите, да се добие референца од секој документ, и потоа да се повика delete() функцијата. Еве како може да го употребите овај пристап за да ги избришите сите документи во solar_system колекцијата:

Поефикасен и скалабилен пристап е да се употреби серија (batch) операција. Сериските операции не само што можат автоматски да избришат повеќе документи туку и го намалуваат бројот на потребни мрежни врски.

За да креирате нова серија, прво мора да ја повикате batch() функцијата на вашата база на податоци, која ќе врати примерок од WriteBatch класата Потоа, може да поставите јамка врз сите резултати од пребарувањето и да ги означите за бришење со поддавање на delete() функцијата од WriteBatch објектот. Конечно, за да започнете со процесот на бришење, можете да ја повикате commit() функцијата. Следниот код ви покажува како:

Имајте на ум дека доколку се обидете да додадете премногу документи на една сериска операција може да се појават надвор-од-меморија грешки. Затоа, ако вашето пребарување најверојатно ќе враќа голем број на документи, ќе мора да ги поделите нив во повеќе серии.

Заклучок

Во оваа воведно упатство, научивте како да извршите операции за читање и пичување во Google Cloud Firestore. Ви препорачувам веднаш да започнете со негово користење во вашите Андроид проекти. Постои добра шанса тој во иднина да ја замени Базата на податоци во реално време. Всуштност, Google веќе вели дека кога ќе излези од бета верзија, веќе ке биде посигурен и скалибилен од Базата на податоци во реално време.

За да научите повеќе за Cloud Firestore, можете да се обратите на неговата официјална документација.

И додека сте тука, проверете некој од нашите други упатства за Firebase и Развивањето на Андроид апликации!

Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.