На моей серверной стороне у меня есть публикация для различных объектов, которая в основном возвращает счет. Каждый отдельный объект имеет другое название публикации, например:
Meteor.publish('object1Count', function(...
Meteor.publish('object2Count', function(...
Что-то вроде этого:
Meteor.publish('object1Count', function(arg) {
var self = this;
var count = 0;
var initializing = true;
var query = arg?{arg:arg}:{};
var projection = !arg?{limit:1}:{};
var handle = Object1.find(query, projection).observeChanges({
added: function (idx) {
count++;
if (!initializing)
self.changed("totalcounts", 1, {count: count});
},
removed: function (idx) {
count--;
self.changed("totalcounts", 1, {count: count});
}
});
initializing = false;
self.added("totalcounts", 1, {count: count});
self.ready();
self.onStop(function () {
handle.stop();
});
});
Но, как вы видите внутри каждого из этих методов, будет эта строка
self.added("totalcounts", 1, {count: count});
На самом деле на стороне клиента, когда мне нужно получить доступ к счетчику объектов, я делаю так:
template.subscribe('object1Count', template.reactiveEventId.get());
...
TotalCounts = (typeof TotalCounts==='undefined')?new Mongo.Collection("totalcounts"):TotalCounts;
Это, очевидно, работает, но теперь, когда я прочитал его дважды, я удивляюсь, почему коллекция "totalcounts" выглядит одинаково для всех объектов, поэтому, если я переключаюсь между страницами, требующими разные totalcounts (для разных объектов), я думаю, что клиент уничтожает локальную коллекцию totalcounts и создает новую. Это также происходит на стороне сервера?
Итак, наконец, мой вопрос: какова лучшая практика? Проекты нуждаются в общем количестве по разным причинам: разбивка на страницы, графики и т. Д. Я хочу создать серверную часть общего количества и просто передать для этого минимальные данные. Должен ли я создавать разные "totalcounts" для каждого объекта? Какой эффективный способ сделать это?
Спасибо