Создайте реактивную публикацию с дополнительными полями в каждом документе
Я хочу сделать публикацию с несколькими дополнительными полями, но я не хочу использовать такжеCollection.aggregate
и потерять мои обновления публикации при изменении коллекции (поэтому я не могу просто использоватьself.added
в этом тоже нет).
Я планирую использоватьCursor.observeChanges
чтобы достичь этого. У меня есть два основных ограничения:
item
где я храню массивitem
_Я бы. Я не хочу публиковать это, но я хочу опубликоватьitem_count
поле с длиной моего поля массиваА вот и подход:
Я планирую цепочку запросов на поиск. Я никогда не делал этого, поэтому мне интересно, если это возможно. Общая (упрощенная) структура запроса будет выглядеть следующим образом:http://jsfiddle.net/Billybobbonnet/1cgrqouj/ (Я не могу получить код правильно отображается здесь)
На основепример подсчета в документации MeteorЯ храню свой запрос в переменнойhandle
чтобы остановить уведомление об изменениях, если клиент отписался:
self.onStop(function () {
handle.stop();
});
Я добавляю флагinitializing = true;
перед моим запросом, и я установил егоtrue
как раз перед звонкомself.ready();
, Я использую этот флаг, чтобы изменить мойitemCount
переменная только в том случае, если это публикация инициализирована. Так что в основном я меняюswitch
как это:switch (field) {
case "item"
if (!initializing)
itemCount = raw_document.item.length;
break;
default:
}
Я хотел убедиться, что этот подход хорош и возможен, прежде чем вносить большие изменения в мой код. Может ли кто-нибудь подтвердить мне, если это правильный путь?