Javascript meteor中的每个模板循环多次

Javascript meteor中的每个模板循环多次,javascript,meteor,Javascript,Meteor,我正在学习如何使用meteor,当我使用每个模板时,应用程序会随机循环多次。有人知道为什么吗 JS 还有HTML <head> <title>LeaderBoard</title> </head> <body> <h1>Leaderboard</h1> {{>leaderboard}} </body> <template

我正在学习如何使用meteor,当我使用每个模板时,应用程序会随机循环多次。有人知道为什么吗

JS

还有HTML

<head>
    <title>LeaderBoard</title>
</head>

    <body>
        <h1>Leaderboard</h1>

        {{>leaderboard}}
    </body>
    <template name="leaderboard">
        {{#each player}}
            <li>{{name}}: {{score}}</li>
        {{/each}}
    </template>

排行榜
排行榜
{{>排行榜}
{{{#每个玩家}
  • {{name}}:{{score}
  • {{/每个}}
    执行
    流星重置
    以清除数据库并尝试以下代码:

    PlayersList = new Mongo.Collection('players');
    
    if (Meteor.isClient) {
      Template.leaderboard.helpers({
        player: function() {
          return PlayersList.find();
        }
      });
    }
    
    if (Meteor.isServer) {
      Meteor.startup(function() {
        // if there are no players in the database
        if (PlayersList.find().count() === 0) {
          PlayersList.insert({name: "David", score: 0});
          PlayersList.insert({name: "Bob", score: 0});
          PlayersList.insert({name: "Wesley", score: -1000});
        }
      });
    }
    
    在原始代码中,从客户端和服务器都插入了播放器(没有
    Meteor.isServer
    guard)。每次连接新的客户机时,服务器每次启动时,都会插入一组新的播放器


    在上面的代码中,我们仅在服务器启动时插入新的播放器,并且仅在数据库中没有播放器时插入新的播放器。这确保了数据库在重置后只进行一次种子设定。

    通过“随机次数”,您的意思是:每次重新启动/刷新列表时,列表会变长吗?我建议您将
    PlayersList包装起来。在
    if(Meteor.isServer)
    子句中插入
    语句。否则,在每次加载时都会插入播放器,这可能会导致您的“闪烁”,前提是仍然添加了autopublish。
    
    PlayersList = new Mongo.Collection('players');
    
    if (Meteor.isClient) {
      Template.leaderboard.helpers({
        player: function() {
          return PlayersList.find();
        }
      });
    }
    
    if (Meteor.isServer) {
      Meteor.startup(function() {
        // if there are no players in the database
        if (PlayersList.find().count() === 0) {
          PlayersList.insert({name: "David", score: 0});
          PlayersList.insert({name: "Bob", score: 0});
          PlayersList.insert({name: "Wesley", score: -1000});
        }
      });
    }