节点js计数器的值不会增加

所以这个想法是,它得到了teamInfo的实例,每个团队然后获得游戏信息,并在比赛时更新游戏信息,我希望计数器在find的每个匹配上递增,然后输出总计数比赛(或更新)的游戏信息。

我的代码如下:

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),我不知道为什么它不增加?!

您可以更新您的计数器在由.update函数返回的承诺,然后打印您的控制台日志

 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... } } }