2015-03-31 52 views
0

所以我遇到了一些麻烦。我有一个引号列表,每个引号都有类别。尝试使用meteor&mongo过滤基于''Category“的”Quotes“

我不确定如何构建这个的最佳解决方案,所以我决定做2个集合。一个用于“行情”,一个用于“类别”。

每个“Quote”都有一个“Category”,它是我插入数据库的类别的_ID。

我想“过滤”基于“类别”的引号列表,我点击了我的web应用程序。

我很难找出如何解决这个问题。

到目前为止,我已经创建了存储我的“被点击分类ID”但是从那里我不知道如何过滤我的“行情”的数据库显示

“带来类别ID = SESSION CAT_ID ONLY行情”会话

任何帮助,非常感谢。

回答

0

你应该真的指出你现在的代码是什么样的,所以我们有一个从头开始的参考。然而,这是一个相当简单的任务,所以我已经先行一步,并提供了一个模拟例子:

模板:

{{#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({}); 
     } 
    } 
}); 

你的收藏架构很好。像MongoDB这样的noSQL数据库最好的事情之一是,你可以根据自己的需要真正选择规范化或非规范化。因此,如果您的结构更容易与两个集合一起工作,那么这很好。一般来说,确定数据库结构的最佳方法是针对最重用的应用程序进行优化,因此对于大量读取应用程序(大多数情况下)可以更简单地进行读取,或者对于大量写入应用程序,可以更容易地进行读取(插入,更新)。结构可以根据这些需求而变化。

+0

谢谢,我其实写了几乎完全相同的东西。这比我想象的要简单。 – user2302401 2015-03-31 02:35:04

+0

@ user2302401 Nps,请在得到机会时标记答案正确(勾选)。确定基本知识的好地方是:http://meteortips.com/book/ – 2015-03-31 02:44:15