2016-12-09 14 views
0

私はこのコード初めてクエリを実行すると、結果が異なるのはなぜですか?

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)); 

とfirebaseを照会するとき観察することによって放出される配列は、例えば

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

であり、予想されるように値9をresultsにプッシュされます。

しかし、このコードを再度実行すると、返された配列は空になり、最後にオブジェクトがいっぱいになるので、最後にresults9,0,3,6,9を保持します。

ここで何が起こっているのですか?初めてthis.dbRef.database.list(/answers/${questionId})が何か異なる結果をもたらすのはなぜですか?私はsum後に退会を呼び出そうとしました

は、アレイにプッシュされているはずですが、その後何も全く起こっていないので、resultsは空にとどまりました。

答えて

関連する問題