Skip to main content

Como filtrar consultas no firebase


Para filtrar dados, combine um dos métodos de limite ou de intervalo com um método de ordenação ao criar uma consulta.

MétodoUso
limitToFirst()Definir o número máximo de itens para retornar a partir do início da lista ordenada de resultados.
limitToLast()Definir o número máximo de itens para retornar a partir do fim da lista ordenada de resultados.
startAt()Retornar itens maiores ou iguais à chave ou ao valor especificado, dependendo do método de ordenação escolhido.
endAt()Retornar itens menores ou iguais à chave ou ao valor especificado, dependendo do método de ordenação escolhido.
equalTo()Retornar itens iguais à chave ou ao valor especificado, dependendo do método de ordenação escolhido.

Ao contrário dos métodos de ordenação, você pode combinar várias funções de limite ou de intervalo. Por exemplo, combine os métodos startAt() e endAt() para limitar os resultados a um intervalo especificado de valores.
Mesmo quando há apenas uma correspondência para a consulta, o instantâneo ainda é uma lista, mas contém somente um item. Para acessar o item, é necessário retornar o resultado:
// My top posts by number of stars
myTopPostsQuery.addValueEventListener(new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        for (DataSnapshot postSnapshot: dataSnapshot.getChildren()) {
            // TODO: handle the post
        }
    }

    @Override
    public void onCancelled(DatabaseError databaseError) {
        // Getting Post failed, log a message
        Log.w(TAG, "loadPost:onCancelled", databaseError.toException());
        // ...
    }
});

Limitar o número de resultados


Use os métodos limitToFirst() e limitToLast() para definir um número máximo de
filhos a serem sincronizados para determinado retorno de chamada. Por exemplo,
se você usar limitToFirst() para definir um limite de 100, inicialmente receberá
até 100 retornos de chamada onChildAdded().
Se você tiver menos de 100 itens armazenados no seu banco de dados do Firebase, um
retorno de chamada onChildAdded() será acionado para cada item.
Conforme os itens são alterados, você recebe retornos de chamada onChildAdded() para os
itens presentes na consulta e retornos de chamada onChildRemoved() para os itens que
saem da consulta para que o número total permaneça 100. Veja a seguir uma demonstração de como o exemplo do app de blog define uma consulta para
recuperar uma lista das 100 postagens mais recentes de todos os usuários:

var recentPostsRef = firebase.database().ref('posts').limitToLast(100);

Esse exemplo define somente uma consulta. Para sincronizar os dados, é necessário ter um
listener anexado. Filtrar por chave ou valor


Use startAt(), endAt() e equalTo() para escolher pontos arbitrários de início, fim e
equivalência para consultas. Isso pode ser útil para paginar dados ou encontrar itens
com filhos que tenham um valor específico.


Como os dados de consultas são ordenados

Nesta seção, explicamos como os dados são classificados por cada um dos métodos de
ordenação na classe Query.

orderByChild


Ao usar orderByChild(), os dados que contêm a chave filha especificada são ordenados
desta maneira:
  1. Filhos com valor null para a chave filha especificada vêm primeiro.
  2. Filhos com um valor false para a chave filha especificada são os próximos.Se vários filhos tiverem o valor false, eles serão classificados lexicograficamente por chave.
  3. Filhos com um valor true para a chave filha especificada são os próximos. Se vários filhos tiverem um valor true, eles serão classificados lexicograficamente pela chave.
  4. Filhos com um valor numérico são os próximos, classificados em ordem crescente. Se vários filhos tiverem o mesmo valor numérico para o node filho especificado, eles serão classificados por chave.
  5. Strings vêm depois dos números e são classificadas lexicograficamente em ordem crescente. Se vários filhos tiverem o mesmo valor para o node filho especificado, eles serão ordenados lexicograficamente por chave.
  6. Objetos são os últimos e são classificados lexicograficamente pela chave em ordem crescente.

orderByKey

Ao usar orderByKey() para classificar seus dados, os dados são retornados
em ordem ascendente pelo nome da chave.

  1. Filhos com uma chave que possa ser analisada como um número inteiro de 32 bits vêm primeiro, classificados em ordem ascendente.
  2. Filhos com um valor de string como chave são os próximos, classificados de modo lexicográfico em ordem ascendente.

orderByValue

Ao usar orderByValue(), os filhos são ordenados pelo valor deles. Os critérios de ordenação são os mesmos que os em orderByChild(), mas o valor do node é usado em vez do valor de uma chave filho especificada.

Desanexar listener 

Retornos de chamada são removidos chamando o método off() na sua referência ao
banco de dados do Firebase.

Você pode remover um único listener ao transmiti-lo como um parâmetro para off().
Chamar off() no local sem argumentos remove todos os listeners desse local.
Chamar off() em um listener pai não remove automaticamente os listeners registrados 
nos nodes filho dele. off() também precisa ser chamado nos listeners filho para remover
o retorno de chamada.

Comments

Popular posts from this blog

Verificar sequencia de caracteres iguais em uma string c#

Neste post vamos ver como explorar uma string e verificar se existe uma seqüencia de caracteres iguais dentro da string. Utilizaremos a tabela ASCII para verificar letras e números, se você precisar verificar mais caracteres basta consultar a tabela e colocar o número referente na condição. Neste exemplo vou verificar se existe na string uma seqüencia quatro(4) números iguais e o mesmo para uma seqüencia de três(3) letras, pois acho que em números de documentos ou nomes isto não pode acontecer. Tabela de decimal ASCII public static bool ValidaTexto(this string txt) { bool flag = true; if (txt.Length < 3) { flag = false; } else { int contLetras = 0; int contNumeros = 0; int tmp = (int)txt.ToCharArray()[0]; foreach (char c in txt.ToCharArray()) { if (((int)c < 127 && (int)c >= 65)) { if (tmp == (int)c) { contLetras++; } if (contLetras >= 3) { break; } tmp = (int)c; } } //inicia novamente o armazenador tmp =...

CRIANDO APLICATIVOS DO ZERO E FÁCIL!

O QUE VOCÊ VAI APRENDER? SÃO MAIS DE 10 HORAS DE CONTEÚDO PURO E MATERIAIS EXTRAS: CRIAR APLICATIVOS   Mesmo sendo um total iniciante vamos explicar para você como criar aplicativos profissionais. Utilizaremos a linguagem HTML, CSS, Javascript em união com Apache Cordova. MODELO DE NEGÓCIO  Vamos ensinar como ganhar dinheiro* fazendo aplicativos. Apresentamos os 4 pilares básicos para a monetização de um aplicativos e como fazer para ser bem-sucedido. ATENDIMENTO AO CLIENTE - Vamos dar atenção também a parte humana do processo. Como técnicas de atendimento e precificação, para você convencer seus futuros clientes a fechar negócio com você. Veja os módulos do curso aqui POR QUE FAZER ESTE CURSO? CERTIFICAÇÃO PROFISSIONAL A conclusão deste curso oferece certificação profissional válida em todo território nacional. Podendo portanto ser colocado no seu curriculum, com duração total de 10 horas. GARANTIA Se por algum motivo você achar que est...

Criando um filtro de busca customizável com JavaScript funcional

Tutoriais utilizando bibliotecas e frameworks para state management se tornaram comuns. Apesar disso, já que muita gente usa muitos frameworks diferentes, muitas vezes precisamos falar sobre a plataforma que permite isso tudo: a odiadíssima ferramenta que é o JavaScript, na sua forma mais pura — conforme descrito com documentações excelentes como a da MDN . Esse tutorial também pode ser útil para quem está iniciando em JavaScript e desenvolvimento em geral já começar com alguma ideia do que é programação funcional. O termo está se tornando popular e quem não subir nesse barco pode ficar para trás em pouco tempo. Não vamos adentrar nos detalhes do que é programação funcional neste artigo — isso é assunto para outras horas de conversa. Aqui, ficaremos no rápido e simples: alcançar nosso objetivo, evitando mutações dos dados e estado global. Iniciando o projeto Pelo bem da simplicidade, vamos manter tudo num único arquivo, que vai ter essa cara: <!DOCTYPE HTML> ...