Para informações introdutórias sobre o Firebase, recomendo este post. O foco desta postagem é a funcionalidade de banco de dados do Firebase.
Esta série é baseada fortemente neste ótimo post, que além de texto possui seis vídeo-aulas, mostrando passo-a-passo todo o desenvolvimento. Porém, se você for seguir o post original, cuidado! Existem algumas diferenças entre o código no vídeo e o código disponibilizado na postagem. Nada muito grande, apenas nomes de variáveis ou classes, porém é o tipo de “erro” que derruba alguém que esteja estudando o tema pela primeira vez.
Para acompanhar com eficácia esta série, são necessários os seguintes pré-requisitos (isto significa que não vou dar detalhes desses itens no texto):
- Paradigma de orientação a objetos;
- Linguagem Java;
- Desenvolvimento Android básico:
- o que é uma Activity, sua composição em interface (xml) e código, entendimento do ciclo de vida de uma activity, criação de objetos (listeners) para tratamento de eventos, como criar novas activities através de intents.
- Para este requisito, recomendo este curso gratuito no site Coursera: Build Your First Android App (Project-Centered Course), que mostra todos esses recursos básico através de pequenos projetos, que vão exemplificando como criar código para responder aos mais diversos tipos de eventos.
- Uso básico do Android Studio:
- criar classes, activities, edição de layouts (e suas propriedades), execução do código em um emulador.
O Firebase é um banco de dados “noSQL”, ou seja, não tem a forma tradicional de organização de dados em tabelas, acessadas de forma relacional. Os dados no Firebase são armazenados como uma árvore JSON (veremos o básico mais a frente), o que muda completamente a forma de como estruturar e acessar os dados. Existe uma playlist de vídeos no youtube com o objetivo de mostrar essas diferenças entre a forma relacional (com sql) e a forma do Firebase. Indico o link aqui mas confesso que eu mesmo ainda não acompanhei esta série de vídeos (ainda).
Indico também uma série de postagens com este objetivo (são 5 posts, o primeiro está aqui). Da mesma forma que o anterior, ainda não os acompanhei ("vendendo o peixe da mesma forma que comprei" 😉 )
JSON
Como falamos anteriormente, os dados são armazenados no Firebase como uma árvore JSON. Mostrarei então um pequeno resumo do básico deste formato, criado a partir da leitura desta ótima referência:
Um guia para JSON que vai direto ao ponto
Autor: Lindsay Bassett
JSON significa “JavaScript Object Notation”. É um formato para armazenamento e intercâmbio de dados, baseado tem texto-puro. Mais ou menos o mesmo objetivo do formato XML.
Apesar do “JavaScript” no nome, é independente de linguagem de programação.
A idéia aqui é armazenar os dados que constituem o estado de um objeto, através de pares nome/valor.
Por exemplo, um objeto “Sapato”, com os atributos brand (marca), color (cor), size (tamanho), e hasLaces (tem cadarços), seria representado em JSON desta forma:
{
“brand” : “Crocs” ,
“color” : “pink” ,
“size” : 9 ,
“hasLaces” : false
}
Par:
nome = “brand”
valor = “Crocs”
Citando o livro indicado: “... o intercâmbio de dados diz respeito aos dados, portanto o JSON não inclui as funções (métodos) dos objetos literais do JavaScript”.
nome = “brand”
valor = “Crocs”
Citando o livro indicado: “... o intercâmbio de dados diz respeito aos dados, portanto o JSON não inclui as funções (métodos) dos objetos literais do JavaScript”.
Tipos de dados:
Um objeto é definido por chaves.
Vários pares nome/valor são separados por vírgula.
Note que um valor pode ser um outro objeto (aninhamento de objetos).
Vamos analisar o seguinte objeto:
- Para o NOME: qualquer string válida
- Para o VALOR:
- string
- número
- booleano
- null
- array
- outro objeto
Um objeto é definido por chaves.
Vários pares nome/valor são separados por vírgula.
Note que um valor pode ser um outro objeto (aninhamento de objetos).
Vamos analisar o seguinte objeto:
{
"person" : {
"name" : "Lindsay",
"height" : 66,
"head" : {
"hair" : {
"color" : “light”,
"length" : "short",
"style" : "A-line"
},
"eyes" : "green"
}
}
}
O objeto principal (indicado por 1) tem apenas um par, cujo nome é “person”, e o valor é outro objeto (indicado por 2).
O objeto 2 é formado por 3 pares, cujos nomes são “name” (o valor é uma string), “height” (o valor é um número) e “head” (o valor é outro objeto, indicado por 3).
O objeto 3 é formado por 2 pares, cujos nomes são “hair” (o valor é outro objeto, indicado por 4), e “eyes” (o valor é uma string).
O objeto 4 é formado por 3 pares, cujos nomes são “color” (o valor é uma string), “length” (o valor é uma string) e “style” (o valor é uma string).
Notem, em especial, a vírgula após a definição do objeto 4, para separar do próximo par (“eyes”/”green”).
O objeto 2 é formado por 3 pares, cujos nomes são “name” (o valor é uma string), “height” (o valor é um número) e “head” (o valor é outro objeto, indicado por 3).
O objeto 3 é formado por 2 pares, cujos nomes são “hair” (o valor é outro objeto, indicado por 4), e “eyes” (o valor é uma string).
O objeto 4 é formado por 3 pares, cujos nomes são “color” (o valor é uma string), “length” (o valor é uma string) e “style” (o valor é uma string).
Notem, em especial, a vírgula após a definição do objeto 4, para separar do próximo par (“eyes”/”green”).
Algumas características dos tipos de dados:
- String
- pode ser composta por qualquer caracter unicode
- sempre entre aspas duplas
- caracteres especiais com “escape” (\)
- Exemplo: inserir as próprias aspas-duplas:
“premiacao” : “diga \”ganhei\” no caixa!” - Número
- Exemplos:
- 123
- 12.67
- 67.234567
- -234.123243
- 6.45342e+12
- Booleano:
- true
- false
- Null:
- null
- Array:
- Conjunto de valores, dos tipos vistos acima (inclusive objetos), entre colchetes e separados por vírgulas
{
“cores” : [ “branco”, “azul”, “amarelo”, “vermelho” ]
}
Misturar e combinar tipos de dados é válido:
{
“valores” : [ 1, “string”, null, true ]
}
É preciso cuidado por que, como já falamos, JSON é independente de linguagem, então se o exemplo acima for virar um array em outra linguagem que não o JavaScript, teremos problemas, já que geralmente os elementos de um vetor devem ser do mesmo tipo.
Ainda sobre arrays, podemos ter:
- array de objetos
- array de arrays (multidimensional)
Seguir para a parte 2.
Nenhum comentário:
Postar um comentário