为什么Meteor Mongo集合在客户端无法访问?

时间:2016-06-20 15:49:14

标签: javascript node.js mongodb meteor meteor-collections

我在下面显示了一段代码,它创建了一个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});
      }


  });

}

3 个答案:

答案 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不会在任何地方使用。 尝试删除其中一行。