【问题标题】:meteorjs and mongodb: how to group many collections into onemeteorjs 和 mongodb:如何将多个集合组合为一个
【发布时间】:2017-07-05 12:05:14
【问题描述】:

我的应用程序是一个产品列表。

我有太多,想要将它们分组,所以我可以重构我的 publish/subscribe 代码(以及我的模板)。

假设我的 mongodb 中有 4 个不同的集合:balloons, balls, tents, tea.

我需要将它们分组为新创建的foobar。然后我可以编写两个发布/订阅语句而不是 4 个,并通过执行以下操作访问我的数据:

在客户端:

Foo = new Meteor.Collection('foo');
Bar = new Meteor.Collection('bar');

在html模板中

{{#each foo.balloons }}

    <p>{{ size }}</p>  
    <p>{{ price }}</p>

{{/each}}

或在另一个html模板中

{{#each bar.tents }}

    <p>{{ size }}</p>  
    <p>{{ price }}</p>

{{/each}}

【问题讨论】:

  • 您能详细解释一下您打算如何将它们分组吗?
  • 这就是问题所在,我不知道如何使用 mongodb 使用(最好的)组集合。

标签: javascript mongodb meteor meteor-blaze nosql


【解决方案1】:

就我个人而言,我不会将它们分成多个集合。我会添加一个变量,例如“group”,其值为“balloons”、“balls”、“tents”或“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>

【讨论】:

  • 我想这就是我要找的东西,你能添加相应的 HTML 模板以使其清晰吗?谢谢! IOW,我如何才能访问组的元素?
  • 在答案中添加了示例模板。
猜你喜欢
  • 2017-04-20
  • 1970-01-01
  • 1970-01-01
  • 2011-08-06
  • 2011-06-21
  • 1970-01-01
相关资源
最近更新 更多