如何遍历JavaScript中存储在firebase数组中的对象?

时间:2018-06-25 21:05:47

标签: javascript arrays firebase firebase-realtime-database

此刻,我正在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中不包含所需属性的特定元素。

我希望这很清楚,在此先感谢您提供的任何帮助!

1 个答案:

答案 0 :(得分:2)

文档(see here)不建议您使用$ firebaseArray的使用方式,该文档指出$ firebaseArray是只读的,不应进行操作。

因此,您有一些选择:

  • 您应该修改用于从Firebase检索数据的查询,而不是在客户端过滤数组,以仅获取具有所需属性的元素(例如:在查询中使用“ equalTo”)

OR

  • 不要使用$ firebaseArray,因为您没有按预期的方式使用它。请使用常规的,良好的时尚JavaScript数组。

**另外,只是一般性的评论:循环遍历时不要从数组中删除元素,因为这通常是不好的做法(我们不希望数组在循环遍历时添加/删除元素) 。而是使用Array.filter。