2016-02-13 2 views
1

я определил следующую публикацию на стороне сервера:я не могу потреблять мои публикации в помощнике шаблона метеора

Meteor.publish('observedQuestionsFeed',function(){ 
     _self = this; 
     return Questions.find({ 
      observedByUsers : {$exists: true,$elemMatch: {$eq:_self.userId}}}); 
    }); 

который возвращает то, что мне нужно;

тогда я определил подписку на эту публикацию в моем шаблоне следующим образом:

Template.observedQuestions.onCreated(function(){ 
    var self = this; 
    self.autorun(function(){ 
     self.subscribe('observedQuestionsFeed'); 
    }); 
}); 

, но я не могу потреблять эту публикацию в моем помощнике, как мне нужно повторить тот же запрос, как я понимаю, но $ эк не является признается;

я поставил:

Template.observedQuestions.helpers({ 
    observedQuestions : function(){ 
     questions = Questions.find({ 
      observedByUsers : {$exists: true,$elemMatch: {$eq:Meteor.userId()}}}); 
     return questions; 
    } 
}); 

, который не работает из-за $ не эквалайзером распознан. Я хочу использовать эту очень конкретную публикацию только в этом конкретном шаблоне. Как мне это сделать? (seenByUsers - простой массив usersIds или не определено в моей коллекции mongo)

ответ

0

В вашей функции публикации вы уже фильтруете записи так, как хотите. Если это пять записей, например, вы отправляете только эти пять записей клиенту. Из-за того, что вы просто должны быть в состоянии сделать:

Template.observedQuestions.helpers({ 
    observedQuestions : function(){ 
     return Questions.find(); 
    } 
}); 
+0

Это то, что я думал, но он возвращает всю коллекцию не только документы я выбрал на стороне сервера, может быть, он должен делать с другими моими шаблонами, на страницы, которые также используют ту же коллекцию. – marcinwal