Как правильно использовать предел метеора

Я хотел бы запустить запрос в meteor и ограничить число полей, возвращаемых только 5. Вот мой код:

var courses =  Courses.find(
    {   day_of_week : {$in: day_selector}, 
        price : {$gt : price_min, $lt : price_max}, 
        starts : {$gt : schedule_min},
        ends : {$lt : schedule_max}}, 
            {limit : 10});
console.log(courses);
return courses;

Однако, когда я это делаю, я получаю все курсы, которые соответствуют селектору в журнале консоли, и не только 10 из них. В шаблоне все прекрасно, и отображаются только 10 курсов.

Я посмотрел на этот вопрос: Ограничить количество результатов в Meteor на стороне сервера?

но это не помогло, поскольку я не использую специальные поля _id для своих курсов, но я использую определенные поля _id, но для других коллекций.

Ответы

Ответ 1

В настоящее время сервер отправляет всю вашу коллекцию курсов, и вы просто фильтруете их до 10 на стороне клиента. Фактически вы можете создать реактивную подписку/публикацию, чтобы установить лимит динамически или просто ограничить количество записей, отправленных на сервер.

Meteor.publish('courses', function(limit) {
  //default limit if none set
  var dl = limit || 10;
  return Posts.find({}, {limit: dl});
});

Meteor.subscribe('courses', Session.get('limit'));

И затем установите предел динамически, используя событие, которое вызывает:

Session.set('limit', 5);