Эффективный шаблон для обновления аргумента ограничения подписки

Я использую subs-manager, но ответ на этот вопрос может не зависеть от этой библиотеки.

У меня есть подписка с одним аргументом limit. В настоящее время, когда я звоню subs.subscribe 'subname', newLimit, добавляется еще одна подписка.

image

Старые подписки остались. Я не хочу, чтобы Meteor тратил время на поддержание старых подписок с более низким лимитом. Вместо добавления новой подписки я хочу обновить аргумент старой подписки. Как лучше всего это сделать?

Обратите внимание, что я также не хочу полностью удалять, например, 'subname', 20 перед подпиской на 'subname', 40, потому что я не хочу, чтобы Meteor выполнял дополнительную работу по повторной отправке первых 20 документов — я хочу, чтобы он просто отправлял документы 21–40.


person Loren    schedule 09.06.2015    source источник
comment
Эй, основная функциональность, которую вы пытаетесь реализовать, — нумерация страниц или бесконечная прокрутка?   -  person kaoskeya    schedule 12.06.2015
comment
Если вы создадите подписку на ту же публикацию, что и раньше, она будет перезаписана, и будут отправлены другие данные, а не все. Так что просто используйте в трекере Meteor.publish('something', Session.get('count')) и все будет ок   -  person sdooo    schedule 15.06.2015


Ответы (1)


Вы можете взглянуть на метод stop() вашей подписки. Согласно документам:

stop() [отменяет] подписку. Обычно это приводит к тому, что сервер указывает клиенту удалить данные подписки из кэша клиента.

Итак, как я это вижу, вам, возможно, удастся сделать:

// globals or whatever
var previousSub, newSub;

// somewhere else
newSub = Meteor.subscribe('subname', newLimit, function () {
  if (previousSub)
    previousSub.stop();
  previousSub = newSub;
});
person SylvainB    schedule 11.06.2015
comment
Спасибо, я попробую это - person Loren; 12.06.2015
comment
Пришлось изменить это на Meteor.subscribe, потому что объект, который возвращает менеджер подпрограмм, не имеет stop(), но ваше решение работает, еще раз спасибо. - person Loren; 15.06.2015