2016-06-20 2 views
0

나는 아래와 같이 Mongo 컬렉션을 생성하는 코드 쇼를 가지고 있습니다. 그러나 Meteor.isClient 스코프 내부에서 컬렉션에 액세스하려고 할 때마다 오류가 발생합니다. 누구든지 내 실수를 찾아 낼 수 있겠 니?Meteor Mongo 콜렉션에 클라이언트에서 액세스 할 수없는 이유는 무엇입니까?

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); 
     } 
    }); 
    } 
+0

자동 게시 패키지를 사용하고 있습니까? 그렇지 않은 경우 컬렉션 ([guide] (http://guide.meteor.com/data-loading.html))을 게시/구독해야합니다. –

+0

자동 게시 및 비보안 패키지가 내 webapp에 추가되었습니다. – damola

+0

- 오류 메시지 란 무엇입니까? –

답변

0
consle.log("Template Loade"); 

다음과 같습니다.

+0

내 코드에서 오타를 수정했습니다. 이것은 문제가되지 않았습니다. – damola

0

제공하신 코드에서 볼 수있는 두 가지 문제점이 있습니다.

먼저 images 템플릿 도우미에서 Images.find() 함수 호출의 두 번째 매개 변수가 올바르지 않습니다. 정렬 작업에 대한 문서 필드 사양이 없습니다. 이 두 번째 매개 변수는 {sort: {'document_field': -1}} 형식이어야합니다. 보고있는 오류 텍스트를 제공하지는 않았지만 Mongo가 쿼리를 처리 할 수없는 것과 관련이 있다고 의심됩니다. 이것이 그 이유 일 것입니다.

둘째,이 덜 심각하고 속성에 인 것처럼 당신이 count에 액세스하는 서버 Meteor.startup() 코드에 console.log() 문에서 클라이언트의 Images 모음에 액세스 할 수없는, 함께 문제가 발생하지 않아야하지만, 커서는 Images.find() 함수 호출에서 반환됩니다. 실제로 이것은 함수이므로 호출해야합니다 : Images.find().count().

또한, 제쳐두고, 내가 정의한 두 컬렉션에 다른 이름을 지정하는 것이 좋습니다. Mongo 셸을 통해 데이터를 조작하려는 경우 둘 다 동일한 이름을 지정하면 문제가 발생할 수 있습니다.

0

이것이 문제가 될지 모르지만 왜 "images"컬렉션을 두 번 초기화합니까? 당신이 코드이야에

ImagesCollection = new Mongo.Collection("Images");

Images = new Mongo.Collection("Images");

그리고 ImagesCollection

어디서나 사용되지 않습니다. 이 줄 중 하나를 제거해보십시오.

관련 문제