在我的应用程序中设置类别系统

时间:2015-06-21 17:14:57

标签: meteor meteor-helper

所以就在今天,我开始使用Meteor(我自己是严格意义上的前端设计师)尝试将我最新的创作之一转变为精心构建的动态Web应用程序。

项目的大部分内容都是基于论坛结构,因此我尝试在类别,论坛和主题之间构建层次结构。我目前的方法是有单独的集合,一个用于论坛/类别,另一个用于线程,然后另一个用于帖子。

我目前面临的困境是,我(根本上)有一个问题就是如何将一个类别下的所有论坛都称为问题。我目前的结构是这样设置的,每个论坛都有一个“父”设置为他们所属的类别的ID,但我不知道我将如何让他们显示正确的组织。

我目前的方法是拥有{{>Categories}}模板,然后在该模板中:

<template name="categories">
    {{#each cname}}
    <div class="category">
        <div class="title">{{name}}</div>
        {{> forums}}
    </div>
    {{/each}}
</template>

我用来显示所有类别的逻辑是(类型:0将其定义为类别):

Template.categories.helpers({
    cname: function() {
        return Forums.find({type: 0})
    }
});

现在{{>forums}}帮手我完全坚持了。这是模板的样子:

<template name="forums">
    {{#each fname}}
    <div class="forum">
        <div class="ficon"><i class="{{ficon}}"></i></div>
        <div class="fname"><a href="forum.php">{{name}}</a><br><div class="fdesc">{{description}}</div></div>
        <div class="fstats">{{threads}}<br><span class="sub">Threads</span></div>
        <div class="fstats">{{posts}}<br><span class="sub">Posts</span></div>
    </div>
    {{/each}}
</template>

我可以让它显示所有论坛,但我仍然感到困惑的是如何让特定论坛只在列表中的特定类别下显示。

如果有人愿意提供帮助,那就太棒了!

1 个答案:

答案 0 :(得分:1)

最简单的方法是进行非规范化,并在帖子集合中包含“类别”字段。如果您不想这样做,则需要使用某种连接 - 包含来自两个集合的数据的数据库查询。 有反应性和非反应性连接,以及其他几个主要取决于您希望应用程序如何工作的注意事项,但这里有大量信息:

https://www.discovermeteor.com/blog/reactive-joins-in-meteor/

这个问题可能有点广泛,但希望这会让你开始:)

编辑:在再次阅读问题时,我看到你想要创建一个层次结构,因此需要额外的集合。 Mongo真的不适合关系数据,从这样的三个集合开始肯定会让事情变得更难。 FWIW,我强烈推荐非规范化,在每篇文章中包含类别和论坛信息。