我在下面显示了一段代码,它创建了一个Mongo集合,如下所示。但是,每当我尝试从Meteor.isClient范围内访问集合时,我都会收到错误消息。任何人都可以发现我的错误。
var bodytext = $('body').text();
if(bodytext.toLowerCase().indexOf('one' || 'two')==-1)
return;
var elem = $("<div>Text Here</div>");
我的Startup.js的内容如下所示
ImagesCollection = new Mongo.Collection("Images");
Images = new Mongo.Collection("Images");
if(Meteor.isClient){
Template.body.helpers({ images :
function() {
console.log("Template Loade");
return Images.find({},{sort: -1 });
}
}) ;
Template.Images.events({
'click .js-image' : function(event){
$(event.target).css("Width", "50px");
} ,
'click .js-del-image' : function(event){
var image_id = this._id ;
$("#"+image_id).hide({slow });
Images.remove({"_id" : image_id});
},
'click .js-rate-image' : function(event){
var rating = $(event.currentTarget).data("userrating");
var image_id = this.id ;
Images.find({"_id": image_id});
}
});
}
答案 0 :(得分:0)
consle.log("Template Loade");
由于您未指定错误,因此上述行将引发错误。
答案 1 :(得分:0)
从您提供的代码中,我可以看到两个问题。
首先,在images
模板助手中,Images.find()
函数调用的第二个参数不正确。您缺少排序操作的文档字段规范。第二个参数必须采用{sort: {'document_field': -1}}
格式。虽然您没有提供您看到的错误文本,但我怀疑该错误与Mongo无法处理查询有关,这就是原因。
其次,虽然这不那么严重,但不应该导致您无法访问客户端上Images
集合的问题,而是在服务器console.log()
代码中的Meteor.startup()
语句中您正在访问count
,就好像它是从Images.find()
函数调用返回的光标上的属性一样。实际上,它是一个函数,应该这样调用:Images.find().count()
。
另外,另外,我建议您为已定义的两个集合指定不同的名称。如果您尝试通过Mongo shell操作数据,那么为它们提供相同的名称可能会给您带来问题。
答案 2 :(得分:0)
我不确定这是否是一个问题,但为什么要初始化两次“图片”集合呢?
ImagesCollection = new Mongo.Collection("Images");
Images = new Mongo.Collection("Images");
在您的代码中,ImagesCollection不会在任何地方使用。 尝试删除其中一行。