Как правильно использовать предел метеора
Я хотел бы запустить запрос в 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);