【发布时间】:2017-02-21 18:14:05
【问题描述】:
我正在尝试总结考试成绩,我的数据看起来像这样
{ testResult:
{ foo:
{foo1: x},
{foo2: y}
},
{ bar:
{bar1: z}
'foo' 和 'bar' 是有意义的问题子类别,子节点包含 questionID 和相应的分数。我需要总结按类别排序的分数。我这样查询列表
let res = this._dbref.database.list('/bmzi-answers',{
query: {
orderByKey: true,
equalTo: id
}
})
并用{{ res | async | json }} 显示结果告诉我,查询有效。我得到类似的东西
[{"cat1":3, "cat2":3, "cat3":3, "$key":"cat"}]
如何减少组件逻辑中的值,以获得所有标记为 cat* 的问题的总和?
我了解过滤器/映射/减少等概念,但我是 Reactive Javascript、Angular2 和 AngularFire 的新手。
请帮助并提前感谢您!
编辑: 所有孩子都有猫前缀,这是域/问卷的一部分。这段代码
let res = this.dbRef.database.list(`/bmzi-answers/${id}`)
.do((array) => { console.log(JSON.stringify(array)); })
.map((array) => array
.reduce((acc, element) => acc + element.$value, 0)
)
let score = res.subscribe(sum => {
console.log("score: " + sum)
});
return score;
在第一次调用时产生这个控制台输出:
[
{ "$key": "cat1", "$value": 3 },
{ "$key": "cat2", "$value": 3 },
{ "$key": "cat3", "$value": 3 }
]
score: [object Object]
这是第二次:
[]
score: undefined
[{"$value":3,"$key":"fitges1"}]
score: undefined
[{"$value":3,"$key":"fitges1"},{"$value":3,"$key":"fitges2"}]
score: undefined
[{"$value":3,"$key":"fitges1"},{"$value":3,"$key":"fitges2"},{"$value":3,"$key":"fitges3"}]
score: undefined
【问题讨论】:
标签: javascript angular firebase firebase-realtime-database angularfire2