У меня есть то, что должно быть относительно простой проблемой. Я устанавливаю сеанс, затем подписываюсь на коллекцию, используя строку, хранящуюся в сеансе. Но когда этот сеанс изменится, мне нужно очистить данные подписки и начать заново.
Мой код выглядит следующим образом:
let subscriptionReady;
let filteredResults = [];
let rawResults = [];
let county = Session.get('county');
let type = Session.get('type');
В основном это просто подготовительная работа по созданию пустых объектов для последующего заполнения. Все это устанавливается в событии клика. После того, как мы установим эти объекты-заполнители, мы идем и подписываемся на эти сеансы:
if (county && !type) {
return function() {
if (subscriptionReady) {
subscriptionReady.stop();
}
filteredResults = [];
rawResults = [];
subscriptionReady = Meteor.subscribe('resourcesearch', county, {
onReady: () => {
rawResults = resourceCollection.find({}, { sort: {score: -1} }).fetch();
rawResults.forEach((result) => {
if (result.score) {
filteredResults.push(result);
}
});
}
});
}
В третьей строке я запускаю проверку, существует ли subscriptionReady
, тогда будет доступен метод stop
. Тогда я запускаю его. Но на самом деле это ничего не останавливает.
Что мне не хватает?