Meteorjs和mongodb:如何将多个集合组合成一个
meteorjs and mongodb: how to group many collections into one
我的应用程序是一个产品列表。
我有太多,我想把它们分组,所以我可以重构我的publish/subscribe
代码(和我的模板)。
假设我的mongodb中有4个不同的集合:balloons, balls, tents, tea.
我需要将它们分组为新创建的foo
和bar
。然后,我可以编写两条发布/订阅语句,而不是4条,并通过以下方式访问数据:
on Client:
Foo = new Meteor.Collection('foo');
Bar = new Meteor.Collection('bar');
{{#each foo.balloons }}
<p>{{ size }}</p>
<p>{{ price }}</p>
{{/each}}
或在另一个HTML模板
{{#each bar.tents }}
<p>{{ size }}</p>
<p>{{ price }}</p>
{{/each}}
我个人不会将它们分组到多个集合中。我会添加一个变量,例如"group",其值为"balloons","balls","tent"或"tea"。
当您订阅时,您可以选择同时订阅一个或多个组。然后在您的帮助程序中,简单地执行如下操作:
Template.foo.helpers({
balloons : function() {
return Foo.find({
"group" : "balloons"
});
},
tents : function() {
return Foo.find({
"group" : "tents"
});
}
});
Template.bar.helpers({
balls : function() {
return Foo.find({
"group" : "balls"
});
},
tea : function() {
return Foo.find({
"group" : "tea"
});
}
});
根据请求更新:
<body>
{{> foo}}
{{> bar}}
</body>
<template name="foo">
<div id="balloons" class="product-list">
{{#each balloons}}
{{> productItem}}
{{/each}}
</div>
<div id="tents" class="product-list">
{{#each tents}}
{{> productItem}}
{{/each}}
</div>
</template>
<template name="bar">
<div id="balls" class="product-list">
{{#each balls}}
{{> productItem}}
{{/each}}
</div>
<div id="tea" class="product-list">
{{#each tea}}
{{> productItem}}
{{/each}}
</div>
</template>
<template name="productItem">
<div class="product">
<h1>{{title}}</h1>
<p>{{description}}</p>
</div>
</template>
相关文章:
- 如何使jQuery插件函数可调用以供独立使用,而不在集合上操作
- 根据id将json数组组合为一个json数组
- Meteor-将选定窗体中的对象添加到集合中
- 接受不在列表中的值-引导组合框
- 主干集合重置和解析
- 使用数据上的角度更改设置集合的第一个元素的动画
- 为集合分配大量的模型弹药
- 如何使用backbone.js从集合中获取模型名称
- Lodash从集合创建集合
- 从客户端获取修改后的对象,并将其与服务器上的原始对象组合
- 组合两个javascript函数
- Telerik rad组合框多列数据绑定
- Meteorjs和mongodb:如何将多个集合组合成一个
- 一个jquery组合多个.html集合属性
- 使用JavaScript从SharePoint组合和排序两个数据集合
- 从查询组合集合插入一个新文档
- 循环遍历一个集合并返回一个新集合,其中组合了具有相同id的对象
- 如何得到多个集合的所有可能组合其中顺序递归地重要
- 使用mobify.js组合两个元素集合
- 流星发布组合和嵌套集合