2015-12-02 131 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。你的方法是正確的。