我正在尝试在Cloud9上创建排行榜。但我得到错误:编辑器中没有定义PlayersList ...该应用程序正在运行,但随后它在编辑器中的代码强调所有“不定义PlayersList”
代码:
PlayersList = new Mongo.Collection('players');
if(Meteor.isClient){
Template.leaderboard.helpers({
'player': function(){
return PlayersList.find({}, {sort: {score: -1, name: 1}});
},
'selectedClass': function(){
var playerId = this._id;
var selectedPlayer = Session.get('selectedPlayer');
if(selectedPlayer === playerId){
return 'selected';
}
},
'showSelectedPlayer': function(){
var selectedPlayer = Session.get('selectedPlayer');
return PlayersList.findOne(selectedPlayer);
}
});
答案 0 :(得分:1)
Cloud9的编辑器使用UDF,并使用foo = 22
使其认为某处有var foo;
缺少的语句。您可以选择忽略它,也可以按如下方式修复它:
将/*eslint-env meteor */
添加到顶部,这样它就不会发出有关Meteor全局变量的警告,也许您还需要添加/* globals Player */
,以防错误仍然存在。 (我没有对此进行测试,请告诉我它是如何进行的,以便我可以改进答案)
答案 1 :(得分:0)
我通过一些解决方法解决了这个问题。我添加了coffeescript,然后当你用coffeescript定义一个集合时,我就像你应该使用全局@
符号。那就是为我解决它。它工作正常。当我在新的浏览器窗口中打开应用程序时,可以在控制台中找到帖子。
示例:
@Posts = new Mongo.Collection('posts')