我正在学习如何使用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>
答案 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
守卫)。每次连接新客户端时,每次服务器启动时,都会插入一组新的播放器。
在上面的代码中,我们仅在服务器启动时插入新玩家和,仅当数据库中没有玩家时。这可确保数据库仅在重置后播种一次。