当前位置: 首页 > 知识库问答 >
问题:

获取Firebase中angularFire数组中的嵌套对象长度

萧煜
2023-03-14

我的Firebase结构如下:

user {
  uid {
    Lessons {
      lid1 {
         Title: ...
          }
      lid2 {
         Title: ...
          }
     }
   }
  }

我想使用AngularFire将用户转换为数组,以便使用AngularFire对其进行过滤,如下所示:

var usersRef = new Firebase($rootScope.baseUrl + "users"); 
var userListfb = $firebase(usersRef).$asArray();

问题是,我还需要Lessons对象的子对象数。当我记录userListfb时,它是一个数组。但是在数组中,课程节点仍然是一个对象。我无法使用长度来获取其长度。使用Firebase AngularFire查找课程节点的子节点数的正确方法是什么?

根据Frank的解决方案编辑1,我得到了一个无限循环(AngularJS的摘要圆误差)。问题是,我不知道“uid”键。我需要在第一个数组中循环它,以便将uid放入第二个firebaseArray。假设我在视图中有一个ng repeat=“user in users”,并在每次重复中在视图级别调用它:

{{getLessonLength(user.uid)}}

那么在控制器中,我有这个功能:

$scope.users = $firebaseArray($scope.usersRef);

$scope.getLessonLength = function (uid) {

        var userRef = $rootScope.baseUrl + "users/" + uid + "/lessons/";

        var lessonsNode = $firebaseArray(new Firebase(userRef));

        return lessonsNode.length;
    }
}

它会抛出以下错误:错误:[$rootScope: infdig]达到10个$digest()迭代。中止!在过去5次迭代中被解雇的观察者:[]

我想要的只是像var lessonscont=snapshot这样的东西。儿童(“课程”)。常规Firebase中的numChildren()。在('child_added'…)上,FirebaseArray中的numChildren()函数。请帮忙!

共有1个答案

齐起运
2023-03-14

AngularFire包含相当多的代码,以确保Firebase中的有序集合按照AngularFire(以及您)的预期正确映射到JavaScript数组。

如果您有对特定用户的引用,您可以创建一个新的同步($Firebase)并在此基础上调用$asArray

var usersRef = new Firebase($rootScope.baseUrl + "users"); 
var userListfb = $firebase(usersRef).$asArray();
var uid1LessonsRef = userRef.child('uid1').child('Lessons');
var uid1LessonsArray = $firebase(uid1LessonsRef).$asArray();
uid1LessonsArray.$loaded().then(function(arr) {
    console.log('Loaded lessons, count: '+arr.length);
});

数据将只同步一次,无论创建了多少个引用。

 类似资料:
  • 尝试使用所有独特的硬币进行选择过滤器,但无法正确到达其末尾。 在循环浏览数据时,我可以得到所有硬币的列表。 我还想使用Set方法和spread操作符来获得唯一的值,但我不知道如何组合所有这些。

  • 问题内容: 我有两个结构: 它代表我的自定义PostgreSQL对象类型(我自己创建): 下一个结构是DB中的表: 我的自定义对象嵌套在Client类型中,名为。我尝试通过以下方式读取数据: 但不幸的是,我无法读取字段(具有默认值)。我不想使用google_account创建单独的表,也不希望将此结构作为客户端表中的单独字段或将其打包为json(创建单独的实体,因为该结构不仅在此表中使用,而且我正

  • 我有如下所示的数据 现在我想获取所有记录的地址,但是当您看到输出时,我将其作为[对象]获取。那么任何人都可以告诉我如何获得地址吗? 这是我的代码: 输出:

  • 我有一个mongodb文档,我正在使用axios ajax调用来提取它。文档有一个对象数组,其中还包含一个嵌套的对象数组。每个对象都分配了一个mongo id。最顶端的数据显示在相应的最顶端的表示组件中,但对象的后续阵列不会显示在其相对表示组件中。我得到的错误是。“TypeError:this.props.card.rdfts未定义”,但会显示它的非数组同级。然而,当我查看react-dev工具和

  • 我试图建立一个方面的导航使用elasticsearch为一个电子商务网站。 商店产品可以有多个变体。我想到的文档结构如下所示: 我将变体定义为嵌套类型。这样,以下查询将返回包含匹配筛选器的变体的所有文档: 现在,我真的希望获得与过滤器匹配的变体的id,以便在类别页面上显示该产品的变体。因此,在本例中,我希望返回第二个变量(1_b)的id。我只获取ResultSet中返回的文档的id。有什么方法可以

  • 问题内容: 我的JSON数据如下所示: 给定文本“ foo”,我想返回所有具有此子字符串的元组。但是我不知道如何编写相同的查询。 我遵循了这个相关的答案,但不知道该怎么做。 这是我现在正在工作的内容: 我不想传递整个文本,而是传递并获得与该文本匹配的结果。 问题答案: 您的解决方案可以进一步简化: 或更简单一点,因为在此示例中,您实际上根本不需要行类型(): dbfiddle 在这里 但这 不是