我是流星及其API /哲學的新手,所以我可能會想這是錯誤的方式。來自其他幫助者的流星訪問幫助
我想在頁面或消息上顯示一些新的好友請求,如果沒有的話。下面是一些代碼:
// addfriend.js
Template.friendRequests.helpers({
friendRequests: function() {
return [
{ username: 'alice' },
{ username: 'carl' },
{ username: 'eve' },
];
},
hasFriendRequests: function() {
var template = Template.instance();
return template.helpers.friendRequests.length > 0;
}
});
// addfriend.html
<template name="friendRequests">
<h2>Friend requests</h2>
{{#if hasFriendRequests}}
<p>Someone's popular today!</p>
<ul>
{{#each friendRequests}}
<li>{{username}}</li>
{{/each}}
</ul>
{{else}}
<p>Sorry, nobody likes you right now.</p>
{{/if}}
</template>
我的問題是friendRequests
最終將是一個MongoDB的查詢,我想hasFriendRequests
到不重複該查詢。我只是希望它對friendRequests
幫手起作用。但是我上面的代碼不適用於此。
更一般地說,我感興趣的是能夠將任何函數f
應用於昂貴的助手,以便我不必重新計算它。所以如果你能照亮我,那會很棒!
我可以想到的一種方法是將數據放在Session
中,然後在那裏工作。這是應該如何完成的?
任何幫助,將不勝感激!
謝謝! 阿林
編輯:我在這裏實現friendRequests.length
工程實際,但我在如何做到這一點在一般情況下仍然有興趣。
是的,我可以想象這些優化會爲我節省查詢。但我不想依賴這個迷你MongoDB緩存協議,我不明白。使用'registerHelper(getLength,...)'註冊一個幫助器並在HTML模板中用'{{if if getLength friendRequests}}'調用它是正確的方法嗎? – 2014-12-01 20:09:05
我認爲通常做這種事的方法是在Minimongo上進行多個查詢 - 通常在前端進行多次查詢不會成爲您的應用程序的瓶頸。 – stubailo 2014-12-01 20:22:25
這很有趣。謝謝! – 2014-12-02 03:16:47