В моем приложении Meteor есть публикация, которая может или не может публиковать большой набор документов.Как правило, издание публикует любое количество документов до нескольких сотен.Однако эти документы добавляются пользователем, и количество добавляемых пользователем ограничений не ограничено.Таким образом, теоретически (и в какой-то момент на практике) пользователи могут иметь несколько тысяч, десятки тысяч, если не сотни тысяч документов, которые будут опубликованы с использованием этой публикации.
Хотя я использую нумерацию страниц только для отображениянебольшое количество документов, публикация - это пользовательская публикация, которая объединяет данные нескольких коллекций и, таким образом, в запросе выполняются нумерация страниц, фильтрация и сортировка:
const subscription = Meteor.subscribe('myLargePublication');
const documents = MyLargePublication.find({ query }, { skip, limit, sort });
Это прекрасно работает независимо от количествадокументов.Однако проблема, с которой я столкнулся, заключается в том, что если пользователь входит в это представление, а затем немедленно направляет его в другое представление, все последующие подписки блокируются до тех пор, пока не будут загружены все данные из myLargePublication
.
Из метеора документация по # подписке Я так понимаю, есть функция stop()
, которую можно вызвать в обработчике подписки на
Отменить подписку.Обычно это приводит к тому, что сервер указывает клиенту удалить данные подписки из кэша клиента.
Следовательно, я надеялся, что использование чего-то подобного может решить проблему:
componentWillUnmount() {
const { subscription } = this.props;
subscription.stop()
}
Просмотр журналов с this.onStop(() => { ... })
в моей публикации не дает никаких полезных идей.Похоже, что эта функция вообще ничего не делает в этом сценарии, и я чувствую, что для решения моей проблемы я должен изменить свою публикацию / подписку.
Можно ли как-нибудь досрочно отменить подписку склиент