[英]Why is Meteor Mongo collection inaccessible on the client?
我下面有一段代碼創建了一個Mongo集合,如下所示。 但是,每當我嘗試從Meteor.isClient范圍內訪問集合時,都會出現錯誤。 請任何人能發現我的錯誤。
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});
}
});
}
我的Startup.js的內容也如下
if(Meteor.isServer){
Meteor.startup(function(){
for(var i = 0 ; i<=23 ; i++)
{
Images.insert({
'img_src' : 'img_'+i+'.jpg' ,
'img_alt' : 'Image number' + i
});
console.log(Images.find().count);
}
});
}
consle.log("Template Loade");
由於您未指定錯誤,因此上面的行將引發錯誤。
從您提供的代碼中,我可以看到兩個問題。
首先,在images
模板幫助器中, Images.find()
函數調用的第二個參數不正確。 您缺少用於排序操作的文檔字段規范。 第二個參數必須采用{sort: {'document_field': -1}}
的格式。 盡管您沒有提供看到的錯誤文本,但我懷疑該錯誤與Mongo無法處理查詢有關,這就是原因。
其次,盡管這種情況不太嚴重,並且應該不會導致無法訪問客戶端上的Images
集合的問題,但是在服務器Meteor.startup()
代碼中的console.log()
語句中,要訪問的count
就好像是從Images.find()
函數調用返回的光標上的屬性。 實際上,它是一個函數,應這樣調用: Images.find().count()
。
另外,順便說一句,我建議您為定義的兩個集合使用不同的名稱。 如果您試圖通過Mongo Shell處理數據,則給它們兩個相同的名稱可能會給您帶來麻煩。
我不確定這是否是一個問題,但是為什么要初始化兩次“ images”集合?
ImagesCollection = new Mongo.Collection("Images");
Images = new Mongo.Collection("Images");
在您的代碼中的任何地方都不會使用ImagesCollection。 嘗試刪除此行之一。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.