簡體   English   中英

為什么客戶端上無法訪問Meteor Mongo集合?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM