Primeiras aulas do curso Firebase com Android: salve os dados NoSQL no Firestore

Firebase com Android: salve os dados NoSQL no Firestore

Introdução ao Firebase Firestore - Introdução

Eu sou o Alex Felipe, instrutor aqui da Alura, e vou apresentar para você o curso de Android com Firestore. Para esse curso, eu vou assumir que você tenha feito o curso de Firebase Authentication porque nós vamos reutilizar o mesmo projeto que desenvolvemos durante esse curso, só que agora vamos utilizar uma nova ferramenta do Firebase, que é o Cloud Firestore.

O Cloud Firestore é uma ferramenta na qual ele permite armazenar dados online, offline e até mesmo clicando “sincronia”. É claro, existem outros detalhes que destacam essa ferramenta que vamos ver durante o curso, mas, no geral, esse é o grande poder que temos ao utilizar essa ferramenta.

E durante este curso, nós vamos, sim, evoluir o nosso projeto para que ele consiga fazer essa integração com o Cloud Firestore. Pegando a parte mais de produto e de projeto, o que nós vamos desenvolver?

Basicamente, vamos reutilizar o mesmo projeto de antes, só que agora vamos ter algumas modificações. Como podemos ver agora, nós vamos trabalhar mais nessa tela de produtos.

Então, a parte mais de pagamentos que tínhamos com o Room, nós não vamos mais trabalhar, vamos focar agora mais em como podemos integrar o nosso aplicativo utilizando apenas o Firestore.

Então, o nosso objetivo real aqui é verificar como fazemos nossa primeira integração com essa ferramenta. Então, como funcionalidades, nós vamos fazer um CRUD aqui dos nossos produtos.

Então, aqui nós temos uma “Lista de produtos” que nesse momento não tem nada, mas nós conseguimos fazer interações com ela, como é o caso de adicionar, alterar, remover e buscar as informações.

Então, nós vamos aprender como criamos aqui esse banco de dados no Firestore e, fazendo essa integração, vamos perceber que conseguimos interagir com esse banco de dados.

Então, por exemplo, quero adicionar um produto que vai ser uma “bola de futebol” e colocar um valor aqui para essa “bola de futebol”, de “99.99”, olha só o que vai acontecer, ele vai adicionar esse registro tanto aqui na nossa “Lista de produtos”, como também aqui no banco de dados do Firestore.

Então, é isso que vamos conseguir fazer, essa integração e sincronização com esse serviço que temos aí do Firebase.

Só para poder mostrar as outras funcionalidades, nós vamos conseguir também verificar os detalhes do produto, editar essa “bola de futebol” para que seja uma “bola de futsal”, por exemplo. Vamos lá e salvamos, ele já altera aqui para nós, e também conseguimos remover essas informações que ele vai lá e remove.

Então, realmente, nós vamos focar bastante em fazer esse CRUD sincronizado aqui com o Firestore e também com o nosso ambiente aqui do aplicativo, que já usa uma arquitetura, que são os Architecture Components, com LiveData, ViewModel e assim por diante.

Então, perceba que vai ter bastante detalhes que vamos ver no meio do caminho, vamos conhecer mais sobre o Firestore, as principais funcionalidades, e eu conto com a sua presença para iniciarmos esse curso. Então, vamos começar? Vamos lá.

Introdução ao Firebase Firestore - Introdução ao Cloud Firestore

Antes de começarmos a configurar o Cloud Firestore aqui no nosso projeto Android, é muito importante conhecermos as principais funcionalidades e o que veremos durante o curso sobre essa ferramenta.

Então, além de saber sobre armazenamento e sincronização de dados do app em escala global, é interessante sabermos o que está por trás dessa ferramenta para vermos com o que vamos lidar. Então, vamos lá.

Para isso, nós podemos clicar aqui nesse botão, que é o “Visualize documentos”, ele vai acessar a documentação direto aqui do Cloud Firestore, que é uma das páginas que utilizamos bastante durante o desenvolvimento, e aqui que nós vamos tirar um pouco mais de informação.

Então, a primeira informação, que é muito importante e que é interessante nós sabermos, é que ele é um banco de dados em nuvem nesse padrão NoSQL, da maneira como você preferir chamar.

E o que isso impacta? Basicamente, esse tipo de estrutura é uma estrutura diferente do estamos acostumados, como é o caso do Room. O Room é o padrão SQL, no qual vai ter tabelas, linhas, enfim, todas aquelas regras que precisamos ter para registrar um dado.

Então, todo registro precisa sempre ter, por exemplo, número, preço e assim por diante. Nessa parte do NoSQL, nós não temos isso, todas aquelas regras que aprendemos não se aplicam aqui.

Veremos com calma o que podemos, o que não podemos fazer aqui, pelo menos de uma maneira mais introdutória, considerando esse padrão, mas entenda que isso daqui é uma das coisas que já impacta bastante.

Porque vamos perceber que, para armazenar informações, vamos ter uma hierarquia diferente, que aqui é na base de coleções e documentos. Até mesmo, é um dos destaques aqui do Firestore por ser uma técnica mais flexível, que não exige que tenhamos que seguir sempre todas as regras para armazenar dados.

Vamos ver essas diferenças e o que podemos ou não fazer em relação a isso. Além disso, aqui no Firestore, como destaque também, ele tem a opção para fazermos consultas expressivas, assim como vemos lá no SQL.

Aqui no curso não veremos sobre essa parte de consultas expressivas porque vamos focar mais na parte de introdução e implementação com a integração dessa ferramenta, então vamos focar mais em CRUD mesmo ao invés de consultas, mas veja que também ele permite isso daqui, é um dos seus destaques.

Como também atualização em tempo real, que basicamente é uma técnica na qual conseguimos atualizar os nossos dados via inserção, alteração e remoção, e ele já consegue refletir em todos os pontos que fazem essa leitura em tempo real, que é justamente uma sincronia aqui dos nossos dados.

Então, se nós conseguirmos fazer essa alteração em algum momento do código, todo mundo que estiver observando, por exemplo, uma coleção, que vai ser o momento principal para ter todos os nossos registros, vai conseguir verificar se aquela coleção teve a devida alteração, seja inserção, remoção ou alteração.

Vamos ver que isso é bastante comum, é um dos grandes poderes que temos aqui no Firestore. Como também o caso do suporte ao offline. Então conseguimos, sim, armazenar informações no modo offline.

Conseguimos operar com o Firestore mesmo que a internet do nosso usuário tenha uma latência muito alta, que seja uma internet lenta que não consegue se comunicar direito, ou então se não tem nenhuma comunicação, que também é um dos outros fatores muito importantes e que envolve também essa parte de sincronização.

Porque se armazenamos uma informação quando não tem essa comunicação com o Firestore diretamente online, nós precisamos fazer uma sincronização depois. Nós vamos ver que ele consegue fazer isso.

Por fim, o que ele indica para nós é que ele está projetado para escala, que é, basicamente, uma estrutura que é feita por meio desse ambiente, que é o Google Cloud Platform, que ele já consegue escalar o nosso aplicativo.

No sentido de que hoje conseguimos trabalhar no aplicativo de cem usuários, se amanhã crescer para duzentos usuários ou então para mil usuários, ele ainda consegue dar conta do recado.

Independente da quantidade que aumentou ou não de requisições. Isso é o que ele promete fazer para nós, então ele já está preparado para isso também, que é outro ambiente que nós desejamos.

Então, no geral, a proposta do Cloud Firestore é muito interessante para qualquer ambiente Android. Só para finalizar essa parte, o outro ponto importante é que você entenda que é uma ferramenta paga, ou seja, você precisa consultar essa parte da documentação para entender se o negócio, no caso, a proposta de precificação dela faz sentido para o seu negócio.

Porque nós vamos fazer os testes, tem a parte gratuita, que é essa parte que estamos vendo aqui de armazenamento de dados, saída de rede, e assim por diante, mas se você considera em produção, sim, você vai ter que pagar.

Então, é muito importante você saber disso, até mesmo para ver se você quer iniciar o seu estudo nessa ferramenta.

E agora, que tivemos essa introdução, aprendemos as principais funcionalidades, o nosso próximo passo é realmente dar início nessa ferramenta, criando o banco de dados, depois que criamos o banco de dados, começamos a fazer a integração com o nosso app Android. Então, até já.

Introdução ao Firebase Firestore - Criando o banco de dados

Agora que tivemos a introdução do Cloud Firestore, o nosso próximo passo é começar com a configuração inicial para depois, então, integrarmos com o nosso aplicativo Android.

Para isso, podemos acessar a página “Primeiros passos” e, em seguida, podemos começar a seguir esse tutorial que é apresentado aqui na documentação para podermos criar esse banco de dados do Cloud Firestore.

Então, com o primeiro passo, é dito que nós precisamos de um projeto do Firebase. No curso anterior, de Firebase Authentication, já criamos um projeto, que é o Alura Esporte. Então, podemos, sim, reutilizar esse projeto.

Caso seja o primeiro curso de Firebase que você está assistindo e você não tem acesso a nenhum projeto, o que você pode fazer?

Você pode seguir o meu passo a passo que está falando aqui: se você ainda não fez isso, você pode ir lá no Console do Firebase, clicar em “Adicionar projeto”, seguir as instruções para criar o projeto, adicionar o Firebase a um projeto do GCP, que é o Google Cloud Platform, e dessa forma você já vai ter acesso a esse mesmo projeto que temos aqui.

Se você quiser uma instrução bem mais passo a passo, também eu vou deixar disponível o vídeo de instalação e preparação de ambiente lá do Firebase Authentication, que é onde é feita essa criação que serve para qualquer tipo de configuração do serviço do Firebase.

Então, é importante ter acesso ao projeto. Novamente, comentando aqui, eu vou reutilizar o mesmo que fizemos anteriormente.

Então, concluindo que temos o projeto, qual é o próximo passo? Basicamente, precisamos acessar o painel de navegação, que é esse painel aqui, à esquerda. E aqui nele, ele está falando o seguinte: que lá vai ter uma opção chamada de “Banco de dados”. Se você estiver com o console em inglês, vai ser Database.

E o que precisamos fazer com essa opção? Além de clicar, ele vai vir com algumas outras informações. Se eu mostrar para você, você vai perceber que não tenho mais essa opção. Por quê?

Porque eu já criei esse meu banco de dados aqui nesse projeto, e o que isso significa? Significa que essa criação é feita apenas uma única vez, não pode ser criada mais de uma única vez, esse banco de dados não é criado ou configurado mais de uma única vez.

Isso é muito importante para você, então preste bastante atenção nisso, porque isso pode trazer alguns impactos dependendo da sua escolha. Veja que aqui para mim, ao invés de “Database” ou “Banco de dados”, ele já aparece aqui o “Cloud Firestore” e o “Realtime Database”.

No final das contas, nós vamos trabalhar com esse Cloud Firestore. Vou até clicar para você já ter um spoiler aí, ver mais ou menos como é que fica, e você vai chegar em uma tela similar a essa após a conclusão.

Mas aí vem a questão, como que você vai chegar a essa tela, considerando que eu não tenho aqui o passo a passo visual para você? Você pode seguir exatamente as mesmas instruções que estão sendo apresentadas aqui na documentação.

Então, depois que você clica lá no “Banco de dados/Database”, ele vai ter um botão falando para você “Criar banco de dados para o Cloud Firestore”, vai ser um botão similar a esse. Então, você procura por esse botão, clica nele e, em seguida, ele já vai trazer um passo a passo para você.

Nesse passo a passo, a próxima decisão que você precisa tomar é o modo inicial para as regras de segurança do Cloud Firestore. E o que isso significa? Significa que você vai ter disponível, no momento que estiver criando, dois modos.

Um é chamado de “Modo de teste” e o outro é chamado de “Modo bloqueado”. Qual é a diferença entre os dois? Basicamente, o modo de teste é feito para pessoas que estão aprendendo o Firebase, utilizando aplicações-cliente, como é o nosso caso, aplicações Android, iOS ou, então, Web, páginas web.

Então, se esse é o seu cenário, principalmente se você está aprendendo o Firebase Firestore, essa é a opção que você precisa escolher, considerando que você não quer ter restrições, não quer fazer nenhuma configuração, e quer apenas fazer a primeira integração com o seu aplicativo, que é o nosso objetivo aqui.

Considerando esse modo de teste, qual que é a diferença entre ele e o bloqueado? O bloqueado vai ter essas regras de utilização mais restritas. Então, a parte de leitura e escrita já vai vir ali bloqueado para esses aplicativos móveis, ou Web, aplicativos-clientes.

Então, se você usar esse modo, você vai precisar modificar essas regras de segurança do seu banco de dados para que você consiga fazer tanto a leitura quanto a escrita.

Esse tipo de modo é feito justamente para que você mexa no Firestore a partir de aplicações backending, que seria aplicações servidoras que vão gerenciar todas essas regras do Firestore.

E, realmente, esse tipo de ambiente é um ambiente mais preparado para um modo produção, porque ele já vai lidar com os problemas que são comuns, que é justamente acesso às informações.

Então, só para concluir, se você usar o modo teste, sim, significa que o seu ambiente não está preparado para o ambiente produção.

E se você tem interesse depois em trabalhar com Firestore a partir de um aplicativo que está funcionando, em produção, eu recomendo que você venha depois para essa página, essa aqui que está indicando “Proteger seus dados”, eu vou até abrir em outra aba.

Que fala exatamente dessas regras que você precisa tomar cuidado, que você precisa ajustar para que o seu ambiente seja seguro o suficiente e atenda o mínimo necessário para ser preparado para o ambiente produção.

Considerando que não é o objetivo do curso falar sobre isso porque aqui o nosso objetivo é fazer a integração, fica a seu critério se aprofundar com esse assunto ou correr atrás das informações conforme sua necessidade.

Então, estou fechando aqui, vou deixar em exercício também e, em seguida, o que precisamos fazer, depois de selecionar o modo que, nesse caso, vai ser o modo de teste, é selecionar o local do banco de dados.

Então, é nesse momento que realmente o seu banco de dados será criado, e aqui não tem como mais você voltar, que foi o que eu fiz aqui no nosso projeto do Alura Esporte.

Então, aqui vai ser o momento que você vai falar “olha, eu quero que o meu banco de dados fique nesse local”, seja com uma questão de ter uma latência menor, e assim por diante, então que seja uma região que seja mais próxima de onde você está ou o seu aplicativo vai operar, e assim por diante.

Então, toma bastante cuidado onde você vai selecionar porque essa seleção não volta atrás e também outros serviços do Firestore, como é o caso desse Cloud Storage, também vai manter esse mesmo local.

Caso você esteja no projeto e você não consegue mudar o local ou definir o local, é porque ele já foi configurado para um desses projetos. Então, de repente alguém usou desse projeto, de Firebase que você está, uma configuração para o Cloud Storage, ele já definiu esse local no Google Cloud Platform.

Então, fica atento a essas informações. Novamente, selecionando isso daqui, não tem como mais voltar, o seu banco de dados será criado nesse local que, dependendo do que você usar, vai ter alguns impactos em relação à performance de comunicação, latência, e assim por diante.

Se você quiser saber mais sobre essas informações, você pode acessas essa página, “Local padrão dos recursos do GCP”, que está falando de tudo, você pode explorar muito essa documentação, tem muitas informações em relação a isso.

Novamente, aqui não é muito o objetivo falar sobre as restrições, mas é importante você ter, pelo menos, alguma informação para você conseguir verificar o que é importante ou não para o seu negócio, o que você está fazendo nesse momento.

Depois que você seleciona isso, o seu banco de dados é criado. Até mesmo tem uma informação que você não pode alterar mais, então isso é muito importante, deixo até um destaque aqui.

E depois que conclui isso, muito provavelmente ele vai vir com uma tela similar a essa ou com alguns passos a mais para você preencher informações que vão armazenar dados aqui, dentro dessa estrutura de banco de dados do Firestore.

Então, você pode seguir, sim, com os exemplos, com o passo a passo que vem do Firebase, durante a criação do banco de dados, mas agora vou demonstrar para você como que seria a representação de um dado, que temos lá no nosso aplicativo, aqui dentro do Firestore para termos, realmente, essa primeira visibilidade com o nosso Firestore.

Então, para isso, o que eu vou considerar? Eu vou considerar a criação de uma coleção que vai permitir com que nós armazenemos os nossos produtos.

Então, é isso que eu vou fazer inicialmente para vermos como que seria, para termos o nosso primeiro contato antes mesmo de fazer a integração.

Então, vamos lá. Como podemos ver aqui, o meu banco de dados não tem nenhum dado, e a única opção que ele dá é justamente de criar essa coleção que eu comentei agora a pouco. E o que é essa coleção? Vamos clicar aqui para vermos.

Basicamente, essa coleção vai pedir um código para que identifiquemos o que queremos salvar, as informações que queremos salvar, e aqui mesmo está falando que a coleção é um conjunto de documentos que contém dados, e ele dá um exemplo, que você pode criar uma coleção chamada de “usuários”.

Ou seja, também podemos criar uma coleção chamada de “produtos”, que representaria uma estrutura para salvar documentos que representam um produto.

Então, a coleção basicamente vai ser algo similar, mas não tem nada a ver, a uma tabela lá do SQL, é ela que vai armazenar os dados que representam alguma coisa para nós, no modo plural.

Então, aqui podemos chamar essa primeira coleção nossa de “produtos”, porque aqui nós vamos armazenar vários produtos. Então, aqui podemos clicar em “Próximo”.

Em seguida, vamos ter acesso a essa outra página, como vemos aqui em cima, que é para adicionar o primeiro documento. Novamente, o documento vai representar, realmente, o dado que salvamos.

Então, dado que estamos em uma coleção de produtos e o nosso objetivo é salvar produtos, aqui nós precisamos realmente colocar a informação do produto. Então, o que precisamos colocar de informação?

Obrigatoriamente, precisamos adicionar um código de identificação do documento. É como se fosse o AI de um registro, de um banco de dados. Então, aqui podemos colocar números, textos, o que quisermos.

Só que aqui temos que ter a responsabilidade de garantir que a informação mantém a unicidade, que seria a característica de um valor único, que não se repete, porque isso não pode acontecer aqui no Firestore, dado que é esse o fator de identificação.

Então, o que é comum de acontecer quando nós não temos esse mecanismo por controle nosso, é usar o código aqui do Firestore, que seria esse código automático. Quando clicamos nele, olha só o que acontece.

O Firebase, no caso, o Firestore, fica responsável em criar códigos únicos para nós que, nesse caso aqui, é esse tipo de hash que estamos vendo aqui, esse código bem maluco que nem conseguimos decorar, mas ele já garante que será único.

Então, sim, você pode utilizar aqui esse mecanismo do Firestore, que é um mecanismo bastante interessante e sempre vai garantir a unicidade.

Em seguida, depois de termos a identificação, podemos colocar os campos para podermos colocar as informações que esperamos. Então, dentro de um produto, o que temos?

Temos u campo que representa o “nome”, que é do tipo “string”, como estamos vendo aqui, e ele pode ser, por exemplo, uma “Bola de futebol”. Então, podemos colocar o campo, já temos o campo aqui. Se quisermos, podemos colocar outros campos também.

Então, vem aqui nessa opção de “Adicionar campo”, como fiz agora pouco, e aqui podemos adicionar o “preço”, que é o que vimos. Então aqui, por exemplo, já que não queremos trabalhar no preço como “string”, podemos colocar outros tipos também, que é o caso aqui do “number”, que vai representar um número com as opções de tipo do Firestore.

E aqui nós podemos colocar um valor com ponto flutuante, como é o caso aqui do “99.99”, que é noventa e nove reais e noventa e nove centavos. E depois que você decide os campos, se quiser adicionar mais, você pode também, você clica em “Salvar”.

Então, salvando aqui, você já vai ter acesso a uma visualização que vai mostrar um documento que representa um produto dentro da coleção de “produtos”.

Novamente, se você quiser adicionar novos documentos, você pode, sim, adicionar novos documentos. Então, aqui, “Adicionar um documento”, você vem aqui, gera um código novo, como falei, é um código que sempre vai ser único, o Firebase vai se responsabilizar por isso.

E aqui você começa a adicionar novamente o “nome”, então aqui você pode colocar “camisa de futebol”. Em seguida, você pode adicionar um “preço” também, então aqui vamos lá, colocamos um “number”, camisa de futebol às vezes é cara, então colocamos aqui “129.99”.

E também, dado aquela ideia de NoSQL, que não tem o SQL, você pode adicionar outros campos, mesmo que seja diferente de um registro. Então, você pode agora colocar aqui um campo chamado de “quantidade”, que também vai ser um “number”, porque o “number” pode ser tanto inteiro como também um decimal.

E aqui podemos falar que tem “10” quantidades. Então, podemos salvar e ele coloca aqui a informação desse novo produto que colocamos.

Então, veja que aqui podemos navegar entre cada um dos registros, no caso, cada um dos documentos, e podemos até mesmo manipular as informações depois que elas são registradas.

Então, aqui eu coloquei “camisa de futebol” com “C” minúsculo, eu posso colocar agora com “C” maiúsculo, eu posso atualizar. Como também ela tem esse campo a mais de “quantidade”, eu posso remover esse campo aqui.

Então, esse “Delete field”, posso clicar aqui, ele vai falar que vai ser removido, não vai ter mais acesso, ele vai lá e remove, mantém essa regra que é só “nome” e “preço”.

Então, veja que é dessa forma que nós trabalhamos inicialmente com essa estrutura de NoSQL do Cloud Firestore. E agora que fizemos essa configuração, tivemos essa primeira introdução, temos os dados disponíveis aqui para nós, o nosso próximo passo será começar a integração com o nosso projeto Android e, então, vamos fazer o consumo dessas informações.

Sobre o curso Firebase com Android: salve os dados NoSQL no Firestore

O curso Firebase com Android: salve os dados NoSQL no Firestore possui 174 minutos de vídeos, em um total de 42 atividades. Gostou? Conheça nossos outros cursos de Android em Mobile, ou leia nossos artigos de Mobile.

Matricule-se e comece a estudar com a gente hoje! Conheça outros tópicos abordados durante o curso:

Aprenda Android acessando integralmente esse e outros cursos, comece hoje!

Plus

  • Acesso a TODOS os cursos da plataforma

    Mais de 1200 cursos completamente atualizados, com novos lançamentos todas as semanas, em Programação, Front-end, UX & Design, Data Science, Mobile, DevOps e Inovação & Gestão.

  • Alura Challenges

    Desafios temáticos para você turbinar seu portfólio. Você aprende na prática, com exercícios e projetos que simulam o dia a dia profissional.

  • Alura Cases

    Webséries exclusivas com discussões avançadas sobre arquitetura de sistemas com profissionais de grandes corporações e startups.

  • Certificado

    Emitimos certificados para atestar que você finalizou nossos cursos e formações.

  • Alura Língua (incluindo curso Inglês para Devs)

    Estude a língua inglesa com um curso 100% focado em tecnologia e expanda seus horizontes profissionais.

12X
R$85
à vista R$1.020
Matricule-se

Pro

  • Acesso a TODOS os cursos da plataforma

    Mais de 1200 cursos completamente atualizados, com novos lançamentos todas as semanas, em Programação, Front-end, UX & Design, Data Science, Mobile, DevOps e Inovação & Gestão.

  • Alura Challenges

    Desafios temáticos para você turbinar seu portfólio. Você aprende na prática, com exercícios e projetos que simulam o dia a dia profissional.

  • Alura Cases

    Webséries exclusivas com discussões avançadas sobre arquitetura de sistemas com profissionais de grandes corporações e startups.

  • Certificado

    Emitimos certificados para atestar que você finalizou nossos cursos e formações.

  • Alura Língua (incluindo curso Inglês para Devs)

    Estude a língua inglesa com um curso 100% focado em tecnologia e expanda seus horizontes profissionais.

12X
R$120
à vista R$1.440
Matricule-se
Conheça os Planos para Empresas

Acesso completo
durante 1 ano

Estude 24h/dia
onde e quando quiser

Novos cursos
todas as semanas