流星中的每个模板循环多次

时间:2015-09-28 20:40:40

标签: javascript meteor

我正在学习如何使用meteor,当我使用每个模板时,app会随机循环一次。有谁知道为什么?

JS

PlayersList = new Mongo.Collection('players');

PlayersList.insert({name: "David" , score:0});
PlayersList.insert({name: "Bob", score: 0});;
PlayersList.insert({name: "Wesley", score: -1000});

if(Meteor.isClient){
    Template.leaderboard.helpers({
        player: function(){
            return PlayersList.find();
        }
            });
}

和HTML

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

    <body>
        <h1>Leaderboard</h1>

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

1 个答案:

答案 0 :(得分:3)

执行meteor reset清除数据库并尝试使用此代码:

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守卫)。每次连接新客户端时,每次服务器启动时,都会插入一组新的播放器。

在上面的代码中,我们仅在服务器启动时插入新玩家,仅当数据库中没有玩家时。这可确保数据库仅在重置后播种一次。