Я хочу реализовать публикацию в Meteor, основанную на параметрах, но я сталкиваюсь с некоторыми проблемами.Как сделать публикацию с параметрами в Meteor и удалить старый подписной документ?
Вот что у меня есть.
Поскольку пользователь вводит событие keyup, которое подписывается на публикацию и передает значение ввода.
'keyup #customerSearch': function(event, template){
var keyword = template.find('#customerSearch').value;
if(keyword){
if(keyword.length >= 3){
Meteor.subscribe('sessioncustomers', keyword);
}
}
}
Издание использует это ключевое слово, чтобы вернуть записи.
Meteor.publish("sessioncustomers", function(keyword){
if(keyword){
if(keyword.length >= 3){
query.name = new RegExp(regExpQuoted(keyword), 'i');
Customers.find(query);
} else {
return null;
}
}else{
return null;
}
});
Проблема. Работает и документы принимаются, за исключением случаев, когда клиент изменяет ключевое слово или, скорее, по мере изменения ключевых слов публикация публикует дополнительные документы, соответствующие ключевым словам, но коллекция клиентов никогда не удаляет старые документы.
Как получить старые документы, которые больше не совпадают с коллекцией клиентов?
Я думал, что, поскольку параметры подписки изменились, что несоответствующие документы будут отписаны, и будут подписаны только новые соответствующие документы.
Сторона клиента с ручкой, похоже, не поддерживает метод остановки. –
Параметр var должен быть определен вне локальной области. Обновлено. – mquandalle
Интересно, для повышения производительности вам не следует подписываться на новую подписку, прежде чем отказаться от подписки на старую подписку? Если в старой и новой подписке содержатся одни и те же документы, эти документы не будут отправляться по кабелю во второй раз, не так ли? –