Firebase - Filtraggio dei dati

Firebase offre diversi modi per filtrare i dati.

Limita al primo e all'ultimo

Cerchiamo di capire qual è il limite del primo e dell'ultimo.

  • limitToFirst restituisce il numero di elementi specificato a partire dal primo.

  • limitToLast restituisce un numero specificato di elementi a partire dall'ultimo.

Il nostro esempio mostra come funziona. Poiché abbiamo solo due giocatori nel database, limiteremo le query a un giocatore.

Esempio

Consideriamo il seguente esempio.

var firstPlayerRef = firebase.database().ref("players/").limitToFirst(1);

var lastPlayerRef = firebase.database().ref('players/').limitToLast(1);

firstPlayerRef.on("value", function(data) {
   console.log(data.val());
}, function (error) {
   console.log("Error: " + error.code);
});

lastPlayerRef.on("value", function(data) {
   console.log(data.val());
}, function (error) {
   console.log("Error: " + error.code);
});

La nostra console registrerà il primo giocatore dalla prima query e l'ultimo giocatore dalla seconda query.

Altri filtri

Possiamo anche utilizzare altri metodi di filtraggio Firebase. IlstartAt(), endAt() e il equalTo()può essere combinato con i metodi di ordinazione. Nel nostro esempio, lo combineremo con il fileorderByChild() metodo.

Esempio

Consideriamo il seguente esempio.

var playersRef = firebase.database().ref("players/");

playersRef.orderByChild("name").startAt("Amanda").on("child_added", function(data) {
   console.log("Start at filter: " + data.val().name);
});

playersRef.orderByChild("name").endAt("Amanda").on("child_added", function(data) {
   console.log("End at filter: " + data.val().name);
});

playersRef.orderByChild("name").equalTo("John").on("child_added", function(data) {
   console.log("Equal to filter: " + data.val().name);
});

playersRef.orderByChild("age").startAt(20).on("child_added", function(data) {
   console.log("Age filter: " + data.val().name);
});

La prima query ordinerà gli elementi per nome e filtrerà dal giocatore con il nome Amanda. La console registrerà entrambi i giocatori. La seconda query registrerà "Amanda" poiché terminiamo la query con questo nome. Il terzo registrerà "John" poiché stiamo cercando un giocatore con quel nome.

Il quarto esempio mostra come possiamo combinare i filtri con il valore "età". Invece di string, stiamo passando il numero all'interno delstartAt() metodo poiché l'età è rappresentata da un valore numerico.