Не удалось полностью понять этот пример из документов... Я попытался запустить его по-разному, чтобы я мог наблюдать, как он работает, и т.д.
Как вы подписаны на это? Можем ли мы включить код на стороне клиента, необходимый для выполнения этой работы?
Есть ли коллекция под названием messages-count
? Является ли Room
набором сообщений? Можем ли мы включить определения коллекции в пример?
Любые советы по этому поводу будут замечательными!
ПРИМЕЧАНИЕ. Это код, который появился, когда этот вопрос был первоначально опубликован (май 2012 г.). Теперь это проще.
// server: publish the current size of a collection
Meteor.publish("messages-count", function (roomId) {
var self = this;
var uuid = Meteor.uuid();
var count = 0;
handle = Room.find({room_id: roomId}).observe({
added: function (doc, idx) {
count++;
self.set("messages-count", uuid, "count", count);
self.flush();
},
removed: function (doc, idx) {
count--;
self.set("messages-count", uuid, "count", count);
self.flush();
}
// don't care about moved or changed
});
// remove data and turn off observe when client unsubs
self.onStop(function () {
handle.stop();
self.unset("messages-count", uuid, "count");
self.flush();
});
});