使用AngularFire2获取Firebase节点的子节点数?

时间:2016-10-19 17:41:38

标签: angular firebase firebase-realtime-database observable angularfire2

我需要计算Firebase中多个子树的子节点数,以便在视图中显示。对于上下文,我的应用程序正在计算流程中不同阶段的用户。

我的根节点(阶段)有两个子树(stageOne,stageTwo)。每个子树包含可变数量的子节点,我需要在视图中对其进行计数和显示。

数据库:

stages
|__stageOne
|  |__user1
|  |__user2
|
|__stageTwo
   |__user3

组件:

stageObject: FirebaseObjectObservable<any>;

constructor(public af: AngularFire){
    this.stageObject = af.database.object('/stages');
}

查看(不显示)

<h3>Stage 1 Count = {{ (stageObject | async)?.stages.stageOne.length }}</h3>
<h3>Stage 2 Count = {{ (stageObject | async)?.stages.stageTwo.length }}</h3>

查看(它应该如何看):

Stage 1 Count = 2
Stage 2 Count = 1

1 个答案:

答案 0 :(得分:2)

您无法使用AngularFire2(不加载所有项目),但您可以使用REST API:

const

使用 this.http.get('https://your-app-name.firebaseio.com/stages/stageOne.json?shallow=true') .map(response => response.json()) .subscribe(items => Object.keys(items).length) 只会返回“已选定”节点的所有子项的键。

如果要加载所有这些内容,可以使用shallow=true

list()

或将对象转换为数组:

this.stageOneObject = af.database.list('/stages/stageOne');