2016-09-05 8 views
0

を数える私はこのようなコードを持っている:Firebase - Foreachループが

firebase.database().ref(...).on('value'.function(snapshot) { 

     snapshot.forEach(function(minisnapshot) { 

      var counter = 0; 
      alert("test"); 
      // 
      minisnapshot.child("books").foreach(function(mainsnapshot) { 

       counter +=0.5; 

        var data = { 
         price:mainsnapshot.child("price").val() * counter; 
         ... 
        } 

       } 

      } 

     } 

形式は次のようになります。問題は、書籍の各ループについて、カウンタが再び0に設定されていることです。それはvar counter = 0を実行しているので、カウンタは常に0.5です(私はそれが0.5,1,1.5 ..となるようにします)。)。

どのようにしてbooks ForEachにのみ適用されるこの種のカウンタを実装できますか?

+1

スナップショットが配列であることを確認してください。 – sandrooco

+0

@Sandrooco [Firebase DataSnapshot](https://firebase.google.com/docs/reference/js/firebase.database.DataSnapshot)です。これは配列ではありませんが、* forEach()メソッドを持っています。 –

+0

スナップショットはデータベース内にあることを示すものではありませんか? (ユニークなキーまたは通常のオブジェクトを持つリスト) – sandrooco

答えて

0

ここで問題となるのは、forEachループ内でカウンタ変数を初期化していて、ループの外に出すだけです。あなたのコードは次のようになります:

firebase.database().ref(...).on('value'.function(snapshot) { 
     var counter = 0; 
     snapshot.forEach(function(minisnapshot) { 
      alert("test"); 
      // 
      minisnapshot.child("books").foreach(function(mainsnapshot) { 
        counter +=0.5; 
        var data = { 
         price:mainsnapshot.child("price").val() * counter; 
         ... 
        } 
      } 
     } 
} 
+0

はい、しかしforEach minisnapshot私は0にカウンタを戻したいと思う。 –