如何在HTML中显示此代码?

时间:2014-04-01 22:05:49

标签: javascript html count meteor

我尝试使用Javascript for my Meteor应用程序(我不知道这是否有所不同),在我的网站上创建一个标记,说明我的网站目前有多少用户。我有这个代码用于跟踪网站上有多少用户:

Presences.find({online: true}).count();

但是如何在我的网站上用HTML显示?我认为随着流星的组织方式,它将使事情变得更加困难。

哦,我还应该提一下,我在这个项目中安装了铁路由器包,所以模板有点不同。这可能会影响代码吗?

2 个答案:

答案 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>