Firebase - Verileri Filtreleme
Firebase, verileri filtrelemek için birkaç yol sunar.
İlk ve Son ile Sınırla
İlk ve son sınırın ne olduğunu anlayalım.
limitToFirst yöntem, ilkinden başlayarak belirtilen sayıda öğeyi döndürür.
limitToLast yöntem, sonuncudan başlayarak belirtilen sayıda öğe döndürür.
Örneğimiz bunun nasıl çalıştığını gösteriyor. Veritabanında sadece iki oyuncumuz olduğundan, sorguları bir oyuncu ile sınırlayacağız.
Misal
Aşağıdaki örneği ele alalım.
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);
});
Konsolumuz ilk oyuncuyu ilk sorgudan ve son oyuncuyu ikinci sorgudan günlüğe kaydedecektir.
Diğer Filtreler
Diğer Firebase filtreleme yöntemlerini de kullanabiliriz. startAt(), endAt() ve equalTo()sipariş yöntemleri ile birleştirilebilir. Örneğimizde, bunu aşağıdakilerle birleştireceğiz:orderByChild() yöntem.
Misal
Aşağıdaki örneği ele alalım.
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);
});
İlk sorgu, öğeleri ada göre sıralayacak ve adlı oyuncudan filtreleyecektir. Amanda. Konsol her iki oyuncuyu da kaydedecektir. Sorguyu bu isimle bitirdiğimiz için ikinci sorgu "Amanda" günlüğünü kaydedecektir. Üçüncüsü, bu isimde bir oyuncu aradığımız için "John" günlüğünü kaydedecektir.
Dördüncü örnek, filtreleri "yaş" değeriyle nasıl birleştirebileceğimizi gösteriyor. String yerine, sayıyıstartAt() yöntem çünkü yaş bir sayı değeri ile temsil edilir.