当我使用此代码查询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
保持为空。
答案 0 :(得分:1)