尝试过滤“;引号"基于'"类别“;使用流星&mongo

Trying to filter "Quotes" based on '"Category" using meteor & mongo

本文关键字:quot 流星 amp mongo 类别 引号 基于 过滤      更新时间:2023-09-26

所以我遇到了一些麻烦。我有一个报价清单,每个报价都有类别。

我不确定如何构建这个的最佳解决方案,所以我决定制作两个系列。一个用于"报价",另一个则用于"类别"。

每个"报价"都有一个"类别",这是我插入数据库的类别的_ID。

我正试图根据我在网络应用程序中点击的"类别"来"筛选"报价列表。

我很难弄清楚该怎么做。

到目前为止,我已经创建了一个会话来存储我的"点击类别Id",但从那里我不知道如何过滤我的"报价"数据库以显示"ONLY Quotes WITH Category Id=session CAT_Id"

非常感谢您的帮助。

您应该真正指出当前代码的样子,这样我们就可以从一个引用开始了。然而,这是一个相当简单的任务,所以我继续提供了一个模拟示例:

模板:

{{#each quoteCategories}}
    <button class="quote-category" value="{{_id}}">{{title}}</button>
{{/each}}
<ul>
{{#each quotes}}
    <li>"{{content}}" &mdash; {{author}}</li>
{{/each}}
</ul>

模板事件

Template.quotesList.events({
    'click button.quote-category': function(event) {
        var categoryId = $(event.target).val();
        Session.set('quote-category-id', categoryId);
    }
});

模板助手:

Template.quotesList.helpers({
    'quoteCategories': function() {
        return QuoteCategories.find({});
    },
    'quotes': function() {
        var categoryId = Session.get('quote-category-id');
        if(categoryId) {            
            return Quotes.find({category: categoryId});
        } else {
            return Quotes.find({});
        }
    }
});

您的Collection架构很好。像MongoDB这样的noSQL数据库最好的一点是,您可以根据自己的需求真正选择规范化或非规范化。因此,对于您的结构,如果将其作为两个集合更容易处理,那么也没关系。一般来说,确定数据库结构的最佳方法是针对最重的使用进行优化,因此,对于读取量大的应用程序(大多数),使其更容易读取,对于写入量大的程序,使其易于写入(插入、更新)。结构可以根据这些需要而变化。