我尝试使用Javascript for my Meteor应用程序(我不知道这是否有所不同),在我的网站上创建一个标记,说明我的网站目前有多少用户。我有这个代码用于跟踪网站上有多少用户:
Presences.find({online: true}).count();
但是如何在我的网站上用HTML显示?我认为随着流星的组织方式,它将使事情变得更加困难。
哦,我还应该提一下,我在这个项目中安装了铁路由器包,所以模板有点不同。这可能会影响代码吗?
答案 0 :(得分:4)
它有点棘手,您需要在客户端(userCount
)上自定义发布功能和虚拟集合
这仅发布在线用户数,并在使用Observer查询进行更改时对其进行更改。
通过这种方式,您不必发布在线用户的所有文档:)因此,如果您拥有更多用户,则不会减慢您的客户端速度。
服务器端代码
Meteor.publish("userCount", function() {
var self = this;
var presences = Presences.find({online: true});
var count = presences.count();
var handle = presences.observe({
added: function() {
if(!handle) return;
count++;
self.changed('userCount', 'count', {count: count});
},
removed: function() {
count--;
self.changed('userCount', 'count', {count: count});
}
});
self.added('userCount', 'count', {count: count});
self.onStop(function() {
handle.stop();
});
this.ready();
});
客户端代码
var userCount = new Meteor.Collection("userCount");
Meteor.subscribe("userCount");
HTML(示例)
<template name="example">
{{userCount}}
</template>
模板助手
Template.example.userCount = function() {
var count_doc = userCount.findOne({_id:'count'});
return (count_doc && count_doc.count) || 0;
}
答案 1 :(得分:2)
PresenceTemplate.js:
Template.PresenceTemplate.helpers({
userCounts:function(){
return Presences.find({online: true}).count();
}
})
PresenceTemplate.html:
<template name="PresenceTemplate">
{{userCounts}}
</template>