Как перебрать объекты, хранящиеся в массиве firebase в JavaScript? - PullRequest
0 голосов
/ 26 июня 2018

В данный момент я храню несколько объектов в Firebase.После успешного извлечения элементов из Firebase и сохранения их в массиве firebaseArray я хочу еще больше прореживать ненужные элементы, удаляя элементы в массиве firebaseArray, которые не имеют желаемого свойства.Рассмотрим мой код на данный момент, который не работает так, как хотелось бы, однако в консоли нет ошибок:

var querylatestPosts = firebase.database().ref("Topics");
$scope.latestPosts = $firebaseArray(querylatestPosts);
console.log($scope.latestPosts) ;
$scope.latestPosts.forEach(function(el) {
 if ($scope.checkWorldview(el) == false) {
   delete $scope.latestPosts.el ;
 }
});

(Обратите внимание, что я не могу войти 'el' в консоли, как и forEachпохоже, выполняется, поскольку я не могу ничего записать в функцию в консоли)

Функция 'checkWorldview' ведет себя так, как ожидается, когда элементы передаются в разных экземплярах, и возвращает false, если обязательное свойство отсутствует в элементе.на рассмотрении.Таким образом, если функция возвращает false, я хочу удалить конкретный элемент в $ scope.latestPosts, который не содержит свойства wanted.

Надеюсь, это понятно, заранее благодарю за любую помощь, которую вы можете предложить!

1 Ответ

0 голосов
/ 26 июня 2018

То, как вы используете $ firebaseArray, не рекомендуется документами ( см. Здесь ), которые утверждают, что $ firebaseArray предназначен только для чтения и не должен использоваться.

Таким образом, у вас есть несколько вариантов:

  • Вместо фильтрации массива на стороне клиента, вы должны изменить запрос, который вы используете для получения данных из Firebase, чтобы получить толькоэлементы, которые имеют желаемое свойство (например: используйте 'equalTo' в запросе)

ИЛИ

  • Не используйте $ firebaseArray, потому что вы его не используететак, как это было задумано.Вместо этого используйте обычный, хороший старый JavaScript-массив.

** Кроме того, просто общий комментарий: не удаляйте элементы из массива во время его циклического просмотра, поскольку это, как правило, плохая практика (мы не ожидаем, что в массивах элементы будут добавлены / удаленыпока мы их проходим)Вместо этого используйте Array.filter.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...