Учебники

Firebase — фильтрация данных

Firebase предлагает несколько способов фильтрации данных.

Предел до первого и последнего

Давайте поймем, что такое предел первым и последним.

  • Метод limitToFirst возвращает указанное количество элементов, начиная с первого.

  • Метод limitToLast возвращает указанное количество элементов, начиная с последнего.

Метод limitToFirst возвращает указанное количество элементов, начиная с первого.

Метод limitToLast возвращает указанное количество элементов, начиная с последнего.

Наш пример показывает, как это работает. Поскольку в базе данных есть только два игрока, мы ограничим количество запросов одним игроком.

пример

Давайте рассмотрим следующий пример.

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);
});

Наша консоль будет регистрировать первого игрока из первого запроса и последнего игрока из второго запроса.

Предел фильтрации данных Firebase до первого последнего

Другие фильтры

Мы также можем использовать другие методы фильтрации Firebase. StartAt () , endAt () и equalTo () можно комбинировать с методами упорядочения. В нашем примере мы скомбинируем его с методом orderByChild () .

пример

Давайте рассмотрим следующий пример.

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);
});

Первый запрос упорядочит элементы по имени и отфильтрует от игрока с именем Аманда . Консоль будет регистрировать обоих игроков. Второй запрос будет регистрировать «Аманда», так как мы заканчиваем запрос этим именем. Третий будет записывать «Джон», так как мы ищем игрока с таким именем.

Четвертый пример показывает, как мы можем комбинировать фильтры со значением «age». Вместо строки мы передаем число внутри метода startAt (), поскольку age представлен числовым значением.