为什么我的查询在第一次之后会产生不同的结果?

时间:2016-12-09 20:02:21

标签: javascript firebase-realtime-database angularfire2

当我使用此代码查询firebase时

results = []
const result = this.dbRef.database.list(`/answers/${questionId}`)
               .do((array) => { console.log( JSON.stringify(array));})
               .map((array) => array.reduce((acc, element) => 
                                             acc + element.$value, 0)
               )
               .subscribe(sum => this.results.push(sum));

observable发出的数组例如是

[{"$value":3,"$key":"fitges1"},{"$value":3,"$key":"fitges2"},{"$value":3,"$key":"fitges3"}]

并按预期将值9推送到results

但是当再次执行此代码时,返回的数组为空,然后逐个填充对象,因此最后results保持9,0,3,6,9

这里发生了什么,this.dbRef.database.list(/answers/${questionId})为什么第一次产生不同的东西?

我尝试在将 sum推送到数组之后调用取消订阅,但之后什么也没发生,所以results保持为空。

1 个答案:

答案 0 :(得分:1)