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étodo | Uso |
---|---|
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 deordenação na classe Query.
orderByChild
Ao usar orderByChild(), os dados que contêm a chave filha especificada são ordenados
desta maneira:
- Filhos com valor null para a chave filha especificada vêm primeiro.
- 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.
- 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.
- 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.
- 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.
- 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 retornadosem ordem ascendente pelo nome da chave.
- Filhos com uma chave que possa ser analisada como um número inteiro de 32 bits vêm primeiro, classificados em ordem ascendente.
- 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.
o retorno de chamada.
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