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.