2015-12-02 132 views
0

编辑:作为原来的问题太含糊我已经更新它,使之更加具体流星仪表板和发布/订阅

我想创建流星仪表板显示了有关我的收藏一些统计数据(例如,多少文档,多少用户......)。我一直在尝试过去的日子,但似乎无法找到一个好的/聪明的方式。

我最初只是做了以下内容:

Template.dashboard.helpers({ 
    getProductsCount: function() { 
    return Products.find().count(); 
    } 
}); 

这没有奏效。我认为,因为它计数从minimongo产品的数量,但不确定。

然后我做了以下内容:

  • 在模板助手,调用一个方法,让显示仪表板页面上的值(不工作)
  • 却被告知不能使用的pub/sub机制,这种类型的指标
  • 通过Session变量曾任职(没有工作,但感觉有点陌生,这类指标数据存储在会话变量

于是我在另一个SO响应AB阅读出反应变量和尝试了以下内容:

Template.dashboard.helpers({ 
    getProductsCount: function() { 
    return Template.instance().myAsyncValue.get(); 
    } 
}); 

Template.dashboard.created = function() { 
    var self = this; 
    self.myAsyncValue = new ReactiveVar("Waiting for response from server"); 
    Meteor.call('getProductsCount', function(error, asyncValue){ 
    if (error) 
     console.log(error); 
    else 
     self.myAsyncValue.set(asyncValue); 
    }); 
}; 

这工作,但我觉得对作为显示产品数量(或任何其他度量)这样简单的事情这非常困难。不知道我明白我为什么应该使用某些作为反应变量的原因吗?

随后的curiosity-退房手续我尝试以下(使用流星添加简单:功法)和它的作品:

Template.customerDashboard.helpers({ 
    getProductsCount: function() { 
     return ReactiveMethod.call("getProductsCount"); 
    } 
}); 

所以,真正的问题是,为什么必须使用无变量和方法像这样简单。有人可以解释吗?

+0

[此问题太模糊,不适合SO](http://stackoverflow.com/help/dont-ask)。但[发布计数](https://atmospherejs.com/tmeasday/publish-counts)软件包可能会对您有所帮助。 – JeremyK

+0

你也应该看看[msavin:mongol](https://atmospherejs.com/msavin/mongol)作为一个很好的例子。他的代码也在github上。 –

+0

我已更新原始问题以使其更具体。 – wiwa1978

回答

0

如果只想在视图中显示count,最好的方法是仅返回计数。你根本不需要发布/订阅。你可以使用服务器方法。如果你也想显示数据,你可以去pub-sub。你的方法是正确的。