我是流星及其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