2017-05-23 7 views
2

チームインフォメーションのインスタンスを取得し、それぞれのチームがそれぞれゲーム情報を取得し、一致した場合にゲーム情報を更新し、マッチが見つかった後、最終的にゲーム情報に行われたマッチ(または更新)の総数を出力します。ノードjsカウンタの値はインクリメントされません

私のコードは次のとおりです:

let counter = 0; 
teams.once("value", teamSnap => { 
    teamSnap.forEach(tSnap => { 
     games.once("value", gameSnap => { 
      gameSnap.forEach(gSnap => { 
       if(teamInfo.Name == gameInfo.AwayTeam) { 
        let currGame = games.child(`${gSnap.key}`); 

        currGame.update({ 
        "AwayTeam": teamInfo.Name, 
        "AwayId": tSnap.key}), 
        function(error){ 
         if (error) { 
          console.log("Data could not be saved." + error); 
         } else {    
          counter++; 
         } 
        } 
       } 
      } 
     } 
    } 
}).then(() => { 
    console.log("Final Count: " + counter) 
}); 

私はconsole.log("Final Count: " + counter)を呼び出すと、それはゼロ(0)、私はそれがインクリメントしない理由はわからないが表示さ!

+0

をあなたの ' console.log(counter); 'ステートメント? –

+0

これは最後にあり、カウンタの初期値は先行してゼロに設定されているので、ゼロが表示されます。 – Learn2Code

+0

あなたのコードは非同期です。基本的には、アップデートコールナックがアップデートされる前にconsole.logステートメントが起動されています – Chris

答えて

0

あなたは.update functionによって返された約束であなたのカウンタを更新し、既存のコードを使用したい場合は、お使いのコンソールログ

if(teamInfo.Name == gameInfo.AwayTeam) { 
    let currGame = games.child(`${gSnap.key}`); 

    currGame.update({ 
     "AwayTeam": teamInfo.Name, 
     "AwayId": tSnap.key}) 
    .then(() => { 
     counter++ 
     console.log(counter) 
    }) 
    .catch(error => { 
    console.log(error) 
    }) 
} 

を印刷することができます:あなたは入れない

if(teamInfo.Name == gameInfo.AwayTeam) { 
    let currGame = games.child(`${gSnap.key}`); 

    currGame.update({ 
     "AwayTeam": teamInfo.Name, 
     "AwayId": tSnap.key}), 
     function(error){ 
      if (error) { 
       console.log("Data could not be saved." + error); 
      } else {    
       counter++; 
       console.log(counter) //You should log your counter here... 
      } 
     } 
} 
+0

私は常に増分した後にカウンタをログオンしますが、フル実行後にカウンタを出力することは、何回成功したか、全体的に何回更新されたかを知ることです。 – Learn2Code

+0

あなたが提供したコードは私がすでに持っているのと同じ動作をします。 – Learn2Code

+0

コールバック/約束の中でカウンタがインクリメントされた後のロギングが確実に動作するはずです。それは奇妙ではない。上のように正確なコードを使用していますか? – Chris

関連する問題